简体   繁体   English

将数据插入SQL表

[英]Insert data into SQL tables

I'm having trouble inserting data into a table. 我在将数据插入表时遇到麻烦。 I have the following tables: track (id, tracktitle), album (id, albumtitle), composer (id, composername), albumtrack (PRIMARY: trackid, albumid, composerid). 我有以下表格:曲目(id,tracktitle),专辑(id,专辑名称),作曲家(id,composername),专辑曲目(主要:trackid,专辑id,composerid)。

My PHP page allows you to add a track and then select the album and composer connected with it. 我的PHP页面允许您添加曲目,然后选择与其连接的专辑和作曲家。 It adds the track to the tracktable okay but it won't add it to an album. 可以将曲目添加到跟踪表中,但是不会将其添加到专辑中。

I keep looking around for how to do it and I keep getting a bit lost. 我一直在寻找如何做的事情,而且我总是迷路。 Can anyone tell me how I should be correctly doing this? 谁能告诉我如何正确执行此操作? Thanks 谢谢

if (isset($_POST['tracktitle'])): 
  // A new track has been entered
  // using the form.

  $cid= $_POST['cid'];
  $tracktitle = $_POST['tracktitle'];
  $albs = $_POST['albs'];

  if ($cid == '') {
  exit('<p>You must choose an composer for this track. Click "Back" and try         again.</p>');   }

  $sql = "INSERT INTO track, albumtrack SET
  track.tracktitle='$tracktitle', albumtrack.albumid='$albs',    albumtrack.composerid='$cid' " ;
  if (@mysql_query($sql)) {
  echo '<p>New track added</p>';
  } else {
  exit('<p>Error adding new track' . mysql_error() . '</p>');
  }

  $trackid = mysql_insert_id();


 if (isset($_POST['albs'])) {
 $albs = $_POST['albs'];
  } else {
 $albs = array();
 }

 $numAlbs = 0;
  foreach ($albs as $albID) {
 $sql = "INSERT IGNORE INTO albumtrack
        SET albumtrack.trackid='$trackid', albumtrack.albumid='$albs',     albumtrack.composerid='$cid'";
if ($ok) {
  $numAlbs = $numAlbs + 1;
} else {
  echo "<p>Error inserting track into album $albID: " .
      mysql_error() . '</p>';
}
  }
 ?>

 <p>Track was added to <?php echo $numAlbs; ?> albums.</p>

  <p><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Add another track</a></p>
  <p><a href="tracks.php">Return to track search</a></p>

 <?php
 else: // Allow the user to enter a new track

  $composers = @mysql_query('SELECT id, composername FROM composer');
   if (!$composers) {
exit('<p>Unable to obtain composer list from the database.</p>');
   }

  $albs = @mysql_query('SELECT id, albumtitle FROM album');
 if (!$albs) {
  exit('<p>Unable to obtain album list from the database.</p>');
  }
  ?>

  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>Enter the new track:<br />
  <textarea name="tracktitle" rows="1" cols="20">
   </textarea></p>
   <p>Composer:
   <select name="cid" size="1">
  <option selected value="">Select One</option>
  <option value="">---------</option>
    <?php
  while ($composer= mysql_fetch_array($composers)) {
   $cid = $composer['id'];
   $cname = htmlspecialchars($composer['composername']);
   echo "<option value='$cid'>$cname</option>\n";
  }
?>
 </select></p>
 <p>Place in albums:<br />
  <?php
   while ($alb = mysql_fetch_array($albs)) {
   $aid = $alb['id'];
   $aname = htmlspecialchars($alb['albumtitle']);
   echo "<label><input type='checkbox' name='albs[]'      value='$aid' />$aname</label><br />\n";
  }
  ?>

Your insert sentence is wrong: 您的插入句子有误:

Try this: 尝试这个:

$sql = "INSERT IGNORE INTO albumtrack (trackid, albumid, composerid) values " .
       "($trackid, $albs, $cid)";

Assuming your IDs are numeric. 假设您的ID是数字。

Beware of SQL Injections when you inject non-sanitized values you get from your request. 当您注入从请求中获得的未经过处理的值时,请当心SQL注入。

Beside's Pablo's corrected way of writing the query. 除了Pablo纠正的查询编写方式之外。 I also notice you are trying to insert into two tables at once with: 我还注意到您正在尝试通过以下方式一次插入两个表:

$sql= "INSERT INTO track, albumtrack"

MySQL does not allow inserting into two tables at once. MySQL不允许一次插入两个表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM