gpt4 book ai didi

php - 奇怪的 mysql,显示来自 myAdmin 的 0 个结果集,但在 PHP PDO 中返回行

转载 作者:行者123 更新时间:2023-11-29 08:59:57 25 4
gpt4 key购买 nike

我有一个在 phpMyAdmin 中运行的查询

SELECT m.msgFrom, m.msgTo, m.msgID, m.subject, m.dateTime, a.username
FROM mailbox m
JOIN accounts a ON ( a.id = IF( m.msgTo =1, m.msgFrom, m.msgTo ) )
WHERE msgTo =1
OR msgFrom =1
AND parentID =0
AND IF( m.msgTo =1, m.fromDelete, m.toDelete ) !=1
ORDER BY DATETIME DESC
LIMIT 250

我得到的行集为 0。

当它与 PDO PHP 和占位符一起使用时,像这样,

$q = $dbc -> prepare("
SELECT m.msgFrom, m.msgTo, m.msgID, m.subject, m.dateTime, a.username
FROM mailbox m JOIN accounts a ON (a.id = IF(m.msgTo = ?, m.msgFrom, m.msgTo))
WHERE msgTo = ? OR msgFrom = ? AND parentID = 0 AND IF(m.msgTo = ?, m.fromDelete, m.toDelete) != 1
ORDER BY dateTime DESC LIMIT 250");
$q -> execute(array($user['id'], $user['id'], $user['id'], $user['id']));

我得到一个行集 1,其中 $user[id'] == 1

这是怎么回事?我该如何解决?

最佳答案

AND 比 mysql 中的 OR 具有更强的绑定(bind)

WHERE msgTo =1
OR msgFrom =1
AND parentID =0
AND IF( m.msgTo =1, m.fromDelete, m.toDelete ) !=1

表示

WHERE msgTo =1
OR (msgFrom =1
AND parentID =0
AND IF( m.msgTo =1, m.fromDelete, m.toDelete ) !=1)

PDO 可能会以另一种方式处理这个问题

尝试

WHERE (msgTo =1
OR msgFrom =1)
AND parentID =0
AND IF( m.msgTo =1, m.fromDelete, m.toDelete ) !=1

在 phpmyadmin 中

关于php - 奇怪的 mysql,显示来自 myAdmin 的 0 个结果集,但在 PHP PDO 中返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949625/

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