我有一份準備好的聲明:準備PHP SQL語句沒有GROUP返回false BY子句
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上運行查詢,並且它完美地工作。 如果我執行準備好的語句時沒有警惕錯誤,我會收到錯誤:bind_param() on boolean
。
如果我添加到查詢的末尾:
GROUP BY q.question_type
然後一切正常。但是,這不是我想要的,因爲它對計數返回null而不是0,而且我也不明白它是如何在沒有GROUP BY的情況下工作的。
如果你想通過question_type計數你需要添加GROUP BY q.question_type。否則在count(*) –