【发布时间】:2021-06-24 07:40:33
【问题描述】:
我有两个语句:一个是用 mysql_query 写的,另一个是用 PDO 写的:
mysql_query:
$sql = $mysql_query("SELECT `user_report`.* FROM `user_report` LEFT JOIN `user` ON
`user_report`.`user_id` = `user`.`user_id` WHERE `user`.`userBlocked` = 0 GROUP BY
`user_id` ORDER BY `reports` DESC, `user_report`.`timestamp` ASC");
准备好 PDO:
$sql = $pdo->prepare("SELECT `user_report`.* FROM `user_report` LEFT JOIN `user` ON
`user_report`.`user_id` = `user`.`user_id` WHERE `user`.`userBlocked` = 0 GROUP BY
`user_id` ORDER BY `reports` DESC, `user_report`.`timestamp` ASC");
$sql->execute();
PDO 不适用于GROUP BY user_id。
我需要它的原因是如果两个结果具有相同的user_id,我想将其显示为一个。
PDO 怎么可能不允许 GROUP BY 函数...在 MySQL 语句中是否有替代方法?
谢谢。
【问题讨论】:
-
Your group by usage is invalid
SELECT * ... GROUP BYcolumn is in general a bad query.. 提供它不起作用的错误消息不是错误消息,此外还提供示例数据和预期结果跨度> -
它可能根本不是 PDO.. 它可能是 MySQL 模式
ONLY_FULL_GROUP_BY。您是否尝试在您的 php 连接到的同一台服务器上运行查询? -
嗯......我很困惑......实际上每次都有效的 BAD QUERY 的定义是什么,因为我之前在很多场合都使用过它
-
GROUP BY用于将查询结果分成组,然后您可以在其中应用聚合函数(min、max等)。在您的查询中,您没有任何聚合函数,因此使用GROUP BY没有意义。早期版本的 MySQL 默认允许错误使用GROUP BY,但较新的版本(从 5.7.5 开始)默认会产生错误。您想通过GROUP BY实现什么目标? -
看起来您可能禁用了 PDO 错误报告。阅读stackoverflow.com/questions/32648371/…