我有一个网站,人们可以喜欢的东西,我需要它,以便当有人点击按钮时,他们可以看到每个喜欢该帖子的人和喜欢它的人跟随者,并在一个不错的列表中计数。
当你点击帖子上的按钮时,我会得到一个包含帖子id的变量,然后我想使用那个id来查看它等于likes.post的位置然后它应该从该行获取likes.users通过该id获取用户表(users.id)中的用户信息,并通过id(follow.user)从后续表中获取用户follwering和followers count。
我第一次尝试进行查询以使此失败严重,并且我在第9行“'WHERE 1 = likes.post'时出现语法错误”,但我认为我还没有正确地执行此操作并且大多数都是更好的版本,考虑到将使用它的流量,性能也是一个大问题。
这是我目前所做的但不起作用:
$query = "SELECT likes.user, users.*,
COUNT(follow.follower) AS Followers,
COUNT(follow2.following) AS Followings
from likes
LEFT JOIN follow ON likes.user = follow.follower
LEFT JOIN follow AS follow2 ON likes.user = follow.follower
LEFT JOIN users ON likes.user = users.id
GROUP BY likes
WHERE $liked = likes.post
";
如果有人知道如何正确地做到这一点,那么你将成为一个救命的人,我无法理解它。
答案 0 :(得分:0)
这里有$liked
什么?
$ likes在PHP中进行评估,如果它没有值,则会导致语法错误为WHERE = likes.post
您应该使用表格的某个特定列名替换$liked
。
Where clause
期待列名,而不是数值。而$liked
的值为1。
<强>更新强>
将您的代码更改为
WHERE likes.post = $liked
答案 1 :(得分:0)
不是通过连接字符串来构建查询,而应该使用PDO。一些优点是:
以下是原始查询的一些问题:
group by
出现在where
follow2
但从未使用过group by
,选择了非聚合列