我正在创建一个图片库,人们可以在这里为每个上传的图片添加评论。
我已经为所有评论做了一个db表,包括一个外键来匹配图像表。我的SQL变量看起来像这样,似乎工作得很好:
$all_comments_one_image_sql="
SELECT userimage.id, image_id, comment, id, comment_date
FROM userimage, image_comment
WHERE image_comment.image_id=userimage.id
ORDER BY comment_id DESC
";
但是当我为我所有的图库图像做while函数时,我在哪里以及如何将正确的评论回声到每个图像?
你应该做这样的左连接:
select userimage.id,
com.image_id,
com.comment,
com.id,
com.comment_date
FROM userimage
LEFT JOIN image_comment as com ON com.image_id=userimage.id
WHERE userimage.id = ?
ORDER BY com.id DESC
首先创建一个获取图像注释的函数:
function getImageComments($imageId){
$query = "SELECT userimage.id, image_id, comment, id, comment_date
FROM userimage
LEFT JOIN image_comment
ON image_comment.image_id=userimage.id
WHERE image_id = $imageId
ORDER BY comment_id DESC
";
mysql_query($query);
return mysql_fetch....
}
我也重做你的查询以获得更好的性能。
因此,无论何时加载图像,都可以使用适当的图像id调用该函数并获取其注释
您必须检查正确的image_id
$all_comments_one_image_sql = "
SELECT userimage.id, image_id, comment, id, comment_date
FROM userimage, image_comment
WHERE image_comment.image_id=userimage.id AND image_id = ?
ORDER BY comment_id DESC
";
在哪里?是你想要显示注释的图像的id -如果你使用pdo,你可以只绑定图像id,而不必关心转义。
如果您有一个所有图像的摘要页面,您可以将结果添加到一个关联数组中,其中键是您的图像id
$comments[] = array();
while ($row = $res->fetch()) {
if (empty($comments[$row->image_id])) {
$comments[$row->image_id] = array();
}
$comments[$row->image_id][] = $row;
}
要显示注释,您可以查看,如果$comments[$image_id]是一个数组,并显示内容