php - 没有从 SQL 查询中获取输出

标签 php mysql

我正在尝试制作一个脚本来显示我和我的 friend 的最新帖子。 有 3 个与此相关的表 - statusUpdates(包含帖子)、friends(使用 ID 的 friend 之间的链接)和 users(包含网站所有用户的详细信息)。 我目前使用的脚本如下。

$myQuery = mysql_query ("SELECT * FROM statusUpdates AS su 
             LEFT JOIN (friends AS fr) ON
                (fr.frHostID = su.authorID OR fr.frContactID = su.authorID) 
             WHERE (fr.frHostID = 105090)
             GROUP BY su.statusID
             ORDER BY su.statusID
             DESC LIMIT 0,5");

请注意,105090是我自己的ID。

问题是,当我没有 friend 时,即使我进行了多次状态更新,也不会显示任何帖子。

解决方案是在 friend 表中创建一行,将我添加为我自己的 friend 。 但在这种情况下,我必须防止我自己的名字出现在“显示好友列表”页面和任何其他相关页面中。

我最初使用INNER JOIN并遇到上述问题。然后我来了一个similar issue ,并按照建议使用 LEFT JOIN 修改了我的脚本。它似乎解决了该帖子的OP问题,但没有解决我的问题。 我无法在那篇文章中提交评论(可能是因为它已有 2 岁了)。所以我创建了这篇文章。

最佳答案

更新:我没有考虑到您也想要您 friend 的帖子。

尽管您已将答案标记为正确,但由于 IN 语句通常比 JOIN 慢,您可以尝试以下操作:

SELECT * 
FROM statusUpdates AS su LEFT JOIN friends AS fr
ON fr.frContactID = su.authorID
WHERE (fr.frHostID = 105090 or su.authorID = 105090)
GROUP BY su.statusID
ORDER BY su.statusID
DESC LIMIT 0,5

初步答案:

只需更改 where 条件:

WHERE (fr.frHostID = 105090)

WHERE (su.authorID = 105090)

原因是您在左连接的右侧部分放置了 where 条件,因此您强制了好友的存在。

顺便说一句,请注意这两篇文章:

Why shouldn't I use mysql_* functions in PHP?

How can I prevent SQL injection in PHP?

关于php - 没有从 SQL 查询中获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17421249/

相关文章:

php - Mysql 加入空数据

php - 如何防止php中的两个单独的ajax调用修改同一个数据库

php - 如何使用php从周数中查找月号,名称

mysql - 在服务器中上传图像失败 CAKEPHP

MySQL检查是否有任何行有 future 的日期

mysql substring/left 命令未返回正确的字符数

javascript - 基于字段 Laravel 5 显示/隐藏记录

python - Django 1.3 随机错误 "Lost connection to MySQL server during query"

MySQL 重复更新不更新

php - 转移网站后wordpress无法运行