簡體   English   中英

我的SQL插入代碼有什么問題?

[英]What is wrong with my SQL Insert code?

我正在努力找出為什么這段代碼對我不起作用。 我有表格: albums (albumid, albumname)composers (composerid, composername)tracks (trackid, tracktitle, albumid, composerid)

當我使用表單添加曲目並將其鏈接到作曲家和專輯時:

<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['composerid'];
 $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['albumid'];
  $aname = htmlspecialchars($alb['albumname']);
  echo "<label><input type='checkbox' name='albs[]' 
  value='$aid' />$aname</label><br />\n";
  } ?>
  </p>
  <input type="submit" value="SUBMIT" />
  </form>
  <?php endif; ?>

我收到此消息:

添加了新曲目
將曲目插入專輯2時出錯:
曲目已添加到0個相冊。

表單之前的php代碼為:

if (isset($_POST['tracktitle'])): 
 // A new track has been entered
 // using the form.
$tracktitle = mysql_real_escape_string($tracktitle);
$cid= $_POST['cid'];
$tracktitle = $_POST['tracktitle'];
$albs = $_POST['albs'];
if ($cid == '') {
exit('<p>You must choose an composer for this track. Click 

“返回”,然后重試。

');}

 $sql = "INSERT INTO tracks (tracktitle) VALUES ('$tracktitle')" ; if (@mysql_query($sql)) { echo '<p>New track added</p>'; } else { exit('<p>Error adding new track' . mysql_error() . '</p> echo mysql_error() ');} $trackid = mysql_insert_id(); if (isset($_POST['albs'])) { $albs = $_POST['albs']; } else { $albs = array(); } $numAlbs = 0; foreach ($albs as $albID) { $sql = "INSERT IGNORE INTO tracks (trackid, albumid, composerid) VALUES " . "($trackid, $albs, $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> <?php else: // Allow the user to enter a new track $composers = @mysql_query('SELECT composerid, composername FROM composers'); if (!$composers) { exit('<p>Unable to obtain composer list from the database.</p>'); } $albs = @mysql_query('SELECT albumid, albumname FROM albums'); if (!$albs) { exit('<p>Unable to obtain album list from the database.</p>');}?> 

我一直在尋找失敗的原因,而且還在不斷撞牆。 我還知道,目前還不是很安全,這是我接下來要解決的問題。 我只想讓實際功能先工作。

@paj:更改

if ($ok) {

if (mysql_query($sql)) {

--

我還建議您將SQL語句更新為

$sql = "INSERT INTO tracks (tracktitle) VALUES ('" . $tracktitle . "')";

$sql = "INSERT IGNORE INTO tracks (trackid, albumid, composerid) VALUES (" . $trackid . ", " . $albID . ", " . $cid . ")";

在我看來, $ok if ($ok) {不存在,除非在if ($ok) {行中。 需要在某個地方定義它,否則它將始終顯示為false,因為它不存在。

實際上,您可以跳過不存在的$ ok,並在if (@mysql_query($sql)) {插入上面的代碼。 我確實必須同意注釋,即代碼需要一些愛,但是如果您想知道為什么它崩潰了,看來這就是原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM