Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL查询检查用户是否喜欢_Php_Mysql - Fatal编程技术网

Php MYSQL查询检查用户是否喜欢

Php MYSQL查询检查用户是否喜欢,php,mysql,Php,Mysql,我要的是查询语句我有两个表 第一个表“posts”: post_id title Userid 1 test 1 另一张桌子是“喜欢” userid post_id 1 1 我需要单次查询,以检查用户是否喜欢这张照片或不批量选择我的解决方案非常差: SELECT * FROM `table` WHERE x = x LIMIT 100; 并将其赋给foreach并对每一行进行查询: foreach($results as $v) {

我要的是查询语句我有两个表 第一个表“posts”:

post_id     title    Userid
1           test     1
另一张桌子是“喜欢”

userid  post_id
1       1
我需要单次查询,以检查用户是否喜欢这张照片或不批量选择我的解决方案非常差:

SELECT * FROM `table` WHERE x = x LIMIT 100;
并将其赋给foreach并对每一行进行查询:

foreach($results as $v)
{
   $data[1] = $v;
   $data[1]['is_like'] = SELECT COUNT(*) FROM likes WHERE userid = 1;
}
1是已登录的用户id


我需要单次查询返回post_id,。。etc和filed like is_like

假设
likes
只能有一行具有相同的(用户id、发布id):

如果不是(对于给定的(用户id、发布id),
likes
中有多行):

更新 我希望我现在对这个问题有了更好的理解。我的假设是:
posts.user\u id
是创建post的用户的id
like
表存储关于谁喜欢该帖子的信息。因此,要检查所有帖子以及是否需要类似的帖子(
$login\u user\u id
应该正确转义)


假设
likes
只能有一行具有相同的(用户id、发布id):

如果不是(对于给定的(用户id、发布id),
likes
中有多行):

更新 我希望我现在对这个问题有了更好的理解。我的假设是:
posts.user\u id
是创建post的用户的id
like
表存储关于谁喜欢该帖子的信息。因此,要检查所有帖子以及是否需要类似的帖子(
$login\u user\u id
应该正确转义)


类似的东西应该作为一个查询来使用(当然,未经测试-您没有提供太多用于测试的数据):


这将为您提供指定用户喜欢的帖子总数。

类似的内容可以作为单个查询使用(当然,未测试-您没有提供太多用于测试的数据):

SELECT 
    p.post_id,
    p.title,
    IF(l.post_id IS NOT NULL,1,0) as like
FROM posts as p
LEFT JOIN likes as l ON l.post_id = p.post_id AND l.userid = p.userid
WHERE p.Userid = 1
这将为您提供指定用户喜欢的帖子总数

SELECT 
    p.post_id,
    p.title,
    IF(l.post_id IS NOT NULL,1,0) as like
FROM posts as p
LEFT JOIN likes as l ON l.post_id = p.post_id AND l.userid = p.userid
WHERE p.Userid = 1
如果likes表中的post_id可用,它将返回1或0


如果likes表中的post_id可用,它将返回1或0。

请编辑您的问题,将一些示例数据添加到
likes
表中,然后将您希望从该示例数据中获得的结果与
posts
中的数据相结合。没有它很难说出你在问什么。谢谢。我已经添加了它,您现在可以检查它。请编辑您的问题,将一些示例数据添加到
likes
表中,然后将您希望从该示例数据中获得的结果与
帖子中的数据相结合。没有它很难说出你在问什么。谢谢。我已经添加了它,你现在可以检查它嗨,首先谢谢你的回答我需要检查它为已经登录的用户我有像$login\u user\u id=1的变量;我需要检查这个用户是否喜欢looopI中的每一篇文章,希望你不理解我的问题。我的问题是:我有($login\u user\u id)这个用户已经登录了。现在我需要检查每一篇文章,这个用户是否喜欢,@user1920678:检查更新版本。希望我能理解你想要实现的目标…嗨,首先谢谢你的回答,我需要检查一下已经登录的用户,我有一个变量,比如$login\u user\u id=1;我需要检查这个用户是否喜欢looopI中的每一篇文章,希望你不理解我的问题。我的问题是:我有($login\u user\u id)这个用户已经登录了。现在我需要检查每一篇文章,这个用户是否喜欢,@user1920678:检查更新版本。希望我能理解你想要达到的目标。。。
SELECT p.* , 
CASE 
WHEN  EXISTS (SELECT NULL FROM likes l 
  WHERE l.user_id = p.user_id and l.post_id =p.post_id) THEN 1
ELSE 0
END as is_liked
FROM posts p
SELECT p.* , 
CASE 
WHEN  EXISTS (SELECT NULL FROM likes l 
  WHERE l.user_id = $login_user_id and l.post_id =p.post_id) THEN 1
ELSE 0
END as is_liked
FROM posts p
select 
  p.title, count(l.post_id) 
from 
  `posts` p
inner join 
  `likes` l
on 
  l.userid = p.userid and l.post_id = p.post_id
where 
  p.userid = loggedinuserID
group by 
  p.userid
SELECT 
    p.post_id,
    p.title,
    IF(l.post_id IS NOT NULL,1,0) as like
FROM posts as p
LEFT JOIN likes as l ON l.post_id = p.post_id AND l.userid = p.userid
WHERE p.Userid = 1