Php 从多个表中查询
我有一个网站是人们可以喜欢的东西,我需要它,这样当有人点击一个按钮,他们可以看到每个人谁喜欢这篇文章和人谁喜欢它那里的追随者和以下计数在一个很好的名单 当您单击帖子上的按钮时,我将获得一个包含帖子id的变量,然后我想使用该id查看其与likes.post相等的位置,然后它应该从该行获取likes.users,并从用户表(users.id)获取用户信息通过该id,并通过id(follow.user)从follow表中获取跟随者和跟随者计数 我第一次尝试通过查询得到这个结果时失败了,我得到了一个“'WHERE 1=likes.post'at line 9”的语法错误,但我认为我做得并不正确,而且大多数情况下都会有一个更好的版本,而且考虑到使用该版本的流量,性能也是一个大问题 以下是我目前制作但不起作用的内容:Php 从多个表中查询,php,mysql,Php,Mysql,我有一个网站是人们可以喜欢的东西,我需要它,这样当有人点击一个按钮,他们可以看到每个人谁喜欢这篇文章和人谁喜欢它那里的追随者和以下计数在一个很好的名单 当您单击帖子上的按钮时,我将获得一个包含帖子id的变量,然后我想使用该id查看其与likes.post相等的位置,然后它应该从该行获取likes.users,并从用户表(users.id)获取用户信息通过该id,并通过id(follow.user)从follow表中获取跟随者和跟随者计数 我第一次尝试通过查询得到这个结果时失败了,我得到了一个“'
$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
";
如果有人知道如何正确地做这件事,你将是一个救生员,因为我无法控制它。这里有什么
$liked
$liked在PHP中进行求值,如果它没有值,则会导致语法错误,如WHERE=likes.post
您应该用表的某个特定列名替换$liked
Where子句
需要的是列名,而不是数值。而$like
的值为1
更新
将代码更改为
WHERE likes.post = $liked
您不应该通过连接字符串来构建查询,而应该真正使用。其中一些优点是:
- 安全性——对SQL注入不太开放
- 清晰——很容易看出查询的参数是什么
- 性能——db服务器可以缓存查询,而不是每次重新编译查询
位于分组依据
之前,其中
- 表别名
已创建但从未使用follow2
- 非分组依据,选择非聚合列