gpt4 book ai didi

php - PDO 无法识别 NOT EXISTS 子句

转载 作者:行者123 更新时间:2023-11-29 11:28:51 26 4
gpt4 key购买 nike

我正在通过 PDO 运行查询。当我直接在 phpMyAdmin 控制台中运行查询时,查询运行良好,但通过 PDO 运行时返回错误。它返回行,就好像 NOT EXISTS 子句不存在一样。我的查询实际上是这样的:

SELECT ul.session, CONCAT(u.firstname,' ', u.lastname) AS owner, ...
FROM usagelog ul
INNER JOIN companies c ON ul.company=c.companyid
INNER JOIN users u ON ul.user=u.userid
WHERE (ul.company=:compid OR 0=:compid)
AND ul.created BETWEEN :start AND :end
AND NOT EXISTS(SELECT ss.session FROM seshstatechangelog ss WHERE ss.session=ul.session AND ss.stateto != :state)
ORDER BY ul.created

我尝试过使用 ? 风格的变量绑定(bind)和 : ,正如您在此处看到的那样。

其他人也遇到过这个问题吗?

最佳答案

SELECT ul.session, CONCAT(u.firstname,' ', u.lastname) AS owner, ...
FROM usagelog ul
INNER JOIN companies c ON ul.company=c.companyid
INNER JOIN users u ON ul.user=u.userid
WHERE (ul.company=:compid OR 0=:compid)
AND (ul.created BETWEEN :start AND :end)
AND NOT EXISTS(SELECT ss.session FROM seshstatechangelog ss WHERE ss.session=ul.session AND ss.stateto != :state)
ORDER BY ul.created

给予,AND(ul.在:start AND :end之间创建)。什么时候,有很多条件。尝试使用 () 将其括起来。这将很容易阅读。可能会将 AND :endAND NOT EXISTS 视为一个条件。

使用parenthesis()NOT EXISTS获取结果,因为您想要其中之一,然后使用AND来获取创建日期 范围,最后使用 AND 来连接 company id 的结果。

关于php - PDO 无法识别 NOT EXISTS 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37751185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com