Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP注释系统-回显匹配外键和id_Php_Sql_Gallery - Fatal编程技术网

PHP注释系统-回显匹配外键和id

PHP注释系统-回显匹配外键和id,php,sql,gallery,Php,Sql,Gallery,我正在创建一个图像库,人们可以在其中为每个上传的图像添加评论 我为所有注释制作了一个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

我正在创建一个图像库,人们可以在其中为每个上传的图像添加评论

我为所有注释制作了一个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功能时,我将在何处以及如何为每个图像回显正确的注释?

您必须检查正确的图像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,而不必关心转义

如果您有所有图像的摘要页面,则可以将结果添加到assoc数组中,其中键是您的图像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\u id]是一个数组并显示内容,则必须检查正确的图像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,而不必关心转义

如果您有所有图像的摘要页面,则可以将结果添加到assoc数组中,其中键是您的图像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\u id]是一个数组并显示内容,您应该执行如下左连接:

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

您应该像这样进行左连接:

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调用函数并获取其注释。

首先创建一个获取图像注释的函数:

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调用函数并获取其注释。

请向我们展示更多代码。您的“所有我的图库图像的while函数”可能对需要帮助的人非常有用。while($gallery\u data=mysql\u fetch\u assoc($gallery\u result)){$gallery\u out.='';}请向我们展示更多代码。您的“所有我的图库图像的while函数”对于想要帮助的人可能非常有用。while($gallery\u data=mysql\u fetch\u assoc($gallery\u result)){$gallery\u out.=“”;}啊-但是您所说的userimage.id=是什么意思?我将在哪里执行该查询?我正在图像库中执行while函数,我是否可以在其中添加一些注释代码?如果你想在while循环中列出所有图像,那么你不需要这个WHERE语句。但是,如果您想获取特定图像的所有注释,例如,当用户单击site.com/image?id=1200时,您将设置userimage.id=1200ah的位置。我在while循环中列出了所有的图像-所以不介意在哪里?这样你就不需要它了。是的,谢谢!我如何在while循环中输出它呢?啊-但是你说的userimage.id=是什么意思?我将在哪里执行该查询?我正在图像库中执行while函数,我是否可以在其中添加一些注释代码?如果你想在while循环中列出所有图像,那么你不需要这个WHERE语句。但是,如果您想获取特定图像的所有注释,例如,当用户单击site.com/image?id=1200时,您将设置userimage.id=1200ah的位置。我在while循环中列出了所有的图像-所以不介意在哪里?这样你就不需要它了。是的,谢谢!我如何在while循环中输出它?图像id是可变的?我是说图像id我猜是userimage.id?我该如何输出它呢?嗯,图像id是可变的?我是说图像id我猜是userimage.id?我如何输出它呢?我在一个页面中列出了所有的图像,并有一个while循环。我可以调用其中的函数吗?我用while循环在一个页面中列出所有图像。我可以调用那里的函数吗?