php - 添加 "WHERE date BETWEEN"语句后查询返回 bool 值

标签 php mysql mysqli

查询运行得很好,没有用日期语句“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/

相关文章:

php - 将类的静态函数存储在变量中

php - 如何使用 PHP PDO 从 Mac 连接到 Sql Server?

mysql - 如何通过 C Programming API 从存储过程中获取参数

php - Memcache city lookup table 与否

php - WordPress 主题功能在调用时不起作用

php - 操作系统 : Failed to listen on localhost:80 (reason: Permission denied)

javascript - 使用 Javascript 检查广播流媒体 URL 是否正常工作

php - 如何在php中循环传递数组?

php - 基于两个下拉菜单显示数据库结果

php - PHP 中动态 mysqli bind_param 参数的简单解决方案是什么?