查询运行得很好,没有用日期语句“BETWEEN ** AND **”限制它。当我添加日期限制时,它返回一个 bool 值,而不是通过循环对结果进行分组。
这是我的代码
$result = $mysqli->query("SELECT blood_type WHERE date BETWEEN '".
$startingdate."' AND '". $endingdate ."',
count(*) AS donor_count FROM donors GROUP BY blood_type");
这是循环:
while ($row = $result->fetch_assoc()) {
$resultArray[] = $row;
}
抛出这个错误:
PHP Fatal error: Call to a member function fetch_assoc() on boolean
知道为什么它没有按应有的方式返回数组吗?
编辑:
我收到以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE date BETWEEN '2015-04-20' AND '2015-05-18', count(*) AS donor_count FROM d' at line 1
最佳答案
当你想调试某些东西时,你应该打印出 SQL。您的查询是这样的:
SELECT blood_type
WHERE date BETWEEN '". $startingdate."' AND '". $endingdate ."',
count(*) AS donor_count
FROM donors
GROUP BY blood_type;
虽然由 SQL 子句构成,但它是乱码。我想你想要:
SELECT blood_type, count(*) as donor_count
FROM donors
WHERE date BETWEEN '". $startingdate."' AND '". $endingdate ."'
GROUP BY blood_type;
SQL 语句中子句的顺序是固定的。如果你把它们放在错误的顺序,你会得到一个错误。您的代码应该检查此类错误。
此外,日期应该真正被参数化而不是嵌入到查询字符串中。
关于php - 添加 "WHERE date BETWEEN"语句后查询返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277147/