MySQL表/查询设计 - 一个项目的倍数,许多注释

时间:2013-03-17 13:25:15

标签: php mysql sql

我有一个显示图片的网站,每页最多30个。

用户可以评论图片,如果有评论,这些评论或至少前几个评论会出现在图片下方。

我有一个图像引用表链接到我服务器上的文件夹。

e.g。

image_id // image id
user_id // user who added
image_url // ref to image

然后是所有评论的单独表格

comment_id
image_id // link to images table
comm_poster_id // id of user who posted comment

现在,问题是将信息一起调用的最佳方法是什么?理想情况下,选择

我真的不能在每个图像下调用ajax,因为每个页面会有30个db的调用会导致它被删除,所以最新的方法是什么呢?

澄清一下,在select中,只有1张图片,但当然可以有多张图片的评论

希望我已经提供了足够的信息

编辑为了澄清,问题是将所有这些信息整理在一起以便显示的最佳方法是什么?我可以运行一个查询来拉取页面上的所有图像,也会以某种方式提取评论如果它们存在,则为图像。

至于我希望数据看起来如何......我不知道。这是我第一次做这样的事情,所以如果可能的话需要指导。

2 个答案:

答案 0 :(得分:1)

好吧,我不是一个php专家,但是我让你开始使用sql方面的东西。我可以用PHP帮助你,但是这里有其他人比我更精通它。

我为你启动了这个sqlFiddle,去看看你可以修补查询以获得你想要的东西。

http://sqlfiddle.com/#!2/79ecf/1/0

从php方面来看,直到你知道如何显示数据,很难说出你的查询需要什么样。我暂时跟着这个:

select *
from images i
inner join comments c on i.image_id=c.image_id;

这是一个非常简单的查询,您可能最终需要添加它。

我假设您使用的是mysql,因为大多数人使用php选择mysql。根据我的理解,有两种连接方式,mysqli和pdo。 PDO似乎正在成为首选方法,但我对它一无所知。以下是两者的参考。只是不要使用mysql_query(),它已被弃用,所以不要费心学习它的任何部分。

PDO: http://dev.mysql.com/doc/refman/5.6/en/apis-php-pdo-mysql.html
MYSQLI: http://php.net/manual/en/mysqli.query.php

其中任何一个都应该提供足够的教程来向您展示如何查询数据库,然后遍历结果以获取数据。然后由您决定如何在页面上显示它。

希望这足以指出你正确的方向。

祝你好运!

答案 1 :(得分:0)

最简单的方法是将两个表连接在一起,首先按图像排序,然后按注释进行子排序。

SELECT i.*, c.comment_id, c.comm_poster_id 
FROM images i LEFT JOIN comments c ON i.image_id=c.image_id
WHERE {whatever where clause selects your set of 30 images}
ORDER BY i.image_id, c.comm_poster_id

使用LEFT JOIN或不显示评论的图像。