如果有耐心的人可以阅读并帮助我,我将不胜感激。我在更新一个 mysql 表时遇到了困难。我有一个表来存储 dj 对唱片专辑的评论和反馈,我还有第二个表来存储有关专辑的一般信息。我的问题是遍历每个反馈行以更新我的表。我只是要发布我所有的代码,也许它会更清楚(对不起,冗长的帖子)。
<?php
$done = false;
$problem = false;
$expected = array('album_id', 'dj','affilliations','rating','comments'
, 'content_id','title','ep','date','genre');
$conn = dbConnect('admin');
if ($_GET && !$_POST) {
if (isset($_GET['album_id']) && is_numeric($_GET['album_id'])) {
$album_id = $_GET['album_id'];
}
else {
$album_id = NULL;
}
if ($album_id) {
//this statement updates album_info correctly, but not album_comments
$sql = "SELECT album_info.album_id, album_info.title, album_info.ep
, album_info.genre, album_info.date, album_comments.content_id
, album_comments.album_id, album_comments.dj
, album_comments.affilliations, album_comments.rating
, album_comments.comments
FROM album_info, album_comments
WHERE album_info.album_id = $album_id
AND album_comments.album_id = $album_id";
$result = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_assoc($result);
}
}
// if form has been submitted, update record
if (array_key_exists('update', $_POST)) {
// prepare expected items for insertion in to database
foreach ($_POST as $key => $value) {
if (in_array($key, $expected)) {
${$key} = mysql_real_escape_string($value);
}
}
// abandon the process if primary key invalid
if (!is_numeric($album_id)) {
die('Invalid request');
}
if(!empty($_POST['dj']) && !empty($_POST['title'])) {
$album_id = mysql_real_escape_string(trim($album_id));
$dj = mysql_real_escape_string(trim($_POST['dj']));
$affilliations = mysql_real_escape_string(trim($_POST['affilliations']));
$rating = mysql_real_escape_string(trim($_POST['rating']));
$comments = mysql_real_escape_string(trim($_POST['comments']));
$title = mysql_real_escape_string(trim($_POST['title']));
$ep = mysql_real_escape_string(trim($_POST['ep']));
$genre = mysql_real_escape_string(trim($_POST['genre']));
$date = mysql_real_escape_string(trim($_POST['date']));
}
$sql="UPDATE album_info, album_comments
ON album_info.album_id = album_comments.album_id
SET album_info.title = '$title', album_info.ep = '$ep'
, album_info.date = '$date', album_info.genre = '$genre'
, album_comments.dj = '$dj'
, album_comments.affilliations = '$affilliations'
, album_comments.rating = '$rating'
, album_comments.comments = '$comments'
album_comments.album_id = '$album_id'
AND album_info.album_id = '$album_id'";
// submit the query and redirect if successful
$done = mysql_query($sql) or die(mysql_error());
if($done) {
printf("<script>location.href='?page=albums'</script>");
}
}
?>
这是正确更新专辑信息,但专辑评论需要循环,如下所示:
<form id="album_form" name="album_form" method="post" action="">
<fieldset>
<legend>Album Info</legend>
<p>
<label for="title">Title</label>
<input type="text" name="title" id="title"
value="<?php echo htmlentities($row['title']); ?>" />
</p>
<p>
<label for="ep">EP</label>
<input type="text" name="ep" id="ep"
value="<?php echo htmlentities($row['ep']); ?>" />
</p>
<p>
<label for="day">Date:</label>
<input name="day" type="text id="day: size="2" maxlength="2"
value="<?php echo htmlentities($row['date']); ?>"/>
</p>
<p>
<label for="genre">Genre</label>
<input type="text" name="genre" id="genre"
value="<?php echo htmlentities($row['genre']); ?>"/>
</fieldset>
</p>
<fieldset>
<legend>Comments</legend>
<!--data below is from table album_comments -->
<table id="tblInsertRowPHP" class="tableResults" cellpadding="0"
cellspacing="0">
<tbody>
<?php
//this spits out all the feedback for the particular album;
//this is the part I need help with
while ($row = mysql_fetch_assoc($result)) {
?>
<tr>
<td>
<?php
echo '<input type="text" name="dj" size="15" value="'.$row['dj'].'" />';
echo '<input type="text" name="affilliations" size="30"
value="'.$row['affilliations'].'" />';
echo '<input type="text" name="rating" size="8"
value="'.$row['rating'].'" />';
echo '<input type="text" name="comments" size="68"
value="'.$row['comments'].'" />';
?>
</td>
</tr>
<?php }
$sql = "SELECT album_id FROM album_info";
$result = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_assoc($result);?>
</tbody>
</table>
</fieldset>
<input type="submit" name="update"
value="Update entry" id="submit" />
<input name="album_id" type="hidden"
value="<?php echo $row['album_id']; ?>" />
</form>
<?php } ?>
如何修改 MYSQL 语句以遍历album_comments 中的每一行并更新它们?我需要准备好的语句,还是可以更改 PHP sql 语句?再次感谢您的帮助——我对此有些陌生。