php - 准备好的 PHP SQL 语句在没有 GROUP BY 子句的情况下返回 false

标签 php mysql sql

我有一个准备好的声明:

if ( $statement = $this->connection->prepare("SELECT question_type, count(*) AS `count` FROM (SELECT question.*, left(question_body, locate('between', question_body)-2) AS question_type FROM question) q WHERE (q.question_type = ? AND q.response_value_id = ?)") ) {
    $statement->bind_param("si", $question_type, $response_value_id);
    $statement->execute();
    return $statement->get_result()->fetch_assoc();
} else {
    var_dump($this->db->error);
}

这里是查询:

SELECT question_type, count(*) AS `count` FROM 
(SELECT question.*, left(question_body, locate('between', question_body) - 2) 
AS question_type FROM question) 
q WHERE q.question_type = 'Did you return home' AND q.response_value_id = 4 

问题: 由于某种原因,尽管我尝试在 phpMyAdmin 上运行查询并且它运行良好,但准备好的语句返回 false。 如果我在没有错误保护的情况下执行准备好的语句,我会得到错误:bind_param() on boolean

如果我在查询末尾添加:

GROUP BY q.question_type

然后一切正常。但是,这不是我想要的,因为它为计数返回 null 而不是 0,而且我也不明白没有 GROUP BY 它是如何工作的。

最佳答案

使用不带group by的聚合函数是不规范的,在最新版本的mysql(5.7)中是不允许的 检查你的版本是否正确,无论如何尝试对 group by 中未提及的列使用曾经聚合的函数 例如:

  "SELECT question_type, count(*) AS `count` 
    FROM (
      SELECT question.*, left(question_body, locate('between', question_body)-2) AS question_type 
      FROM question ) q 
  WHERE q.question_type = ? AND q.response_value_id = ?
  GROUP BY question_type)"

  "SELECT min(question_type), count(*) AS `count` 
    FROM (
      SELECT question.*, left(question_body, locate('between', question_body)-2) AS question_type 
      FROM question ) q 
  WHERE (q.question_type = ? AND q.response_value_id = ?)"

关于php - 准备好的 PHP SQL 语句在没有 GROUP BY 子句的情况下返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45489457/

相关文章:

php - 表值的多个键?

javascript - Google reCAPTCHA 在引导模型上第二次失败

java - 使用 JDBC 连接 Android/MySQL

mysql - 为什么 SQL HAVING 条件中的 COUNT 没有计算出正确的值?

php - 按数字字母顺序输出列表 - MYSQL

javascript - 强制 json_encode 在平面数组中创建数值字符串

php - PHP 和 NodeJS 之间的通信

MySQL 对 group by 子句中的多列进行计数

php - 产品销售报告 每周 每月

sql - MySQL:每个帖子的最新评论