0

我想向用户展示他们朋友最近上传的内容。

我有一个数组中的用户朋友 ID:

$friends

一个用户可能有成千上万的朋友。

我可以从以下 1 个用户朋友中选择上传:

$row = $mysqli->query("SELECT * FROM photos 
                       WHERE uploader_id =  ".$friend." 
                       ORDER BY date_uploaded 
                       DESC LIMIT ".$page.", 25");

但我需要找到所有用户朋友上传的内容。我考虑过在遍历$friends数组的循环中执行此操作,但随后我可能会运行数千个 mysql 查询。

我怎样才能最有效地做到这一点?

所以澄清一下:

在“照片”表中搜索由特定用户(朋友)上传的照片,保存在$friends变量中,按 date_uploaded 排序并限制为 x 个结果,这样我就可以拥有第 1、2、3 页等。

4

1 回答 1

3

使用implode以逗号连接数组元素并使用 MySQL 的IN子句。

$row = $mysqli->query("SELECT * FROM photos 
                   WHERE uploader_id IN (". implode(',' $friends) .") 
                   ORDER BY date_uploaded 
                   DESC LIMIT ".$page.", 25");

确保您的$friends数组不包含任何未经处理的输入。就目前而言,如果$friends以任何方式依赖于用户输入,您就可以接受 SQL 注入。

于 2013-10-19T16:02:42.867 回答