选择pdo不存在的地方

时间:2016-08-21 22:29:16

标签: php mysql pdo

我有一个查询

SELECT *
FROM  `user`
WHERE NOT
EXISTS (

SELECT *
FROM roleInEvent
WHERE user.userId = roleInEvent.userId
AND eventId = 1
)
AND user.disciplineId =5

每当我在我的mysql控制台中运行它时,它返回1行。这是对的。 但是在我的php脚本中它返回零行,而它完全是相同的查询。

我的php脚本如下所示:

    $db = DatabaseHelper::get();
    $st = $db->prepare('SELECT *
                        FROM  `user`
                        WHERE NOT
                        EXISTS (

                        SELECT *
                        FROM roleInEvent
                        WHERE user.userId = roleInEvent.userId
                        AND eventId = 1
                        )
                        AND user.disciplineId =5');
    $st->execute();

    if ($st->errorCode() !== \PDO::ERR_NONE) {
        return null;
    }

有人知道这里有什么问题吗?

2 个答案:

答案 0 :(得分:0)

解决方案很简单。 我忘了将结果返回给我的javascript

答案 1 :(得分:-1)

你也可以使用INNOT一样使用

SELECT * FROM user WHERE id_user NOT IN ( SELECT other_data FROM roleInEvent WHERE user.userId = roleInEvent.userId AND eventId = 1 ) AND user.disciplineId =5

如果查询:SELECT other_data FROM roleInEvent WHERE user.userId = roleInEvent.userId AND eventId = 1为您带来了某些内容,则user表中不必存在此结果。

其他例子是:

用户表:

---------------------------
id_user | name_user
1         fernando
2         urban

在其他表中我们有块用户:

阻止用户:

id_user_block | id_user | name_user
1               1         fernando
2               2         john lennon

所以,我想只向我提供阻止用户表中不存在的用户:

查询将是:

SELECT * FROM Users WHERE id_user NOT IN ( SELECT id_user FROM blocked_users )

所以,我们得到的最后一个查询:

id_user | name_user
2         john lennon

问候!