php - mysqli_query 返回 false 而不是 1 行
问题描述
我不明白为什么 mysqli_query 返回 false,我在互联网上搜索了很多但我没有找到任何东西。
我的代码:
$M1 = "SET @Month = month(TIMESTAMPADD(month, -1, CAST(now() AS DATE)));
Set @firstDay = CONCAT('01','/', @month, '/',year(now())); SET @lastDay =
last_day(TIMESTAMPADD(month, -1, CAST(now() AS DATE))); SELECT count(*)
AS M1 FROM APPEL where CAST(D_CREATION AS DATE) BETWEEN @firstDay and
@lastDay";
$connexion = cnx();
if ($connexion)
{
$result = mysqli_query($connexion, $M1);
if($result)
{
$row = mysqli_fetch_assoc($result); // This is Line 55
$_SESSION['ArrayMois'][0] = implode($row);
}
else
{
$_SESSION['ArrayMois'][0] = 0;
}
}
错误是:
警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,布尔值在 ... 第 55 行给出
这个查询总是返回false
,但如果我在 PHPMyAdmin 中执行它,我会返回一行。
解决方案
1) MySQL报告日志位置
2) 阅读此答案以了解如何生成和阅读 MySQL 错误报告。
对于您的代码:
$row = mysqli_fetch_assoc($result)
or error_log("MYSQL Error on line ". __LINE__.
" :: ".print_r(mysqli_error($connection),true));
更新:
你说:
警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,布尔值在 ... 第 55 行给出
你的错误是什么意思:
这意味着查询没有按预期工作,因此:
$result = mysqli_query($connexion, $M1)
or error_log("MYSQL Error on line ". __LINE__.
" :: ".print_r(mysqli_error($connection),true));
问题:
您在一个MySQL_query
查询处理程序中运行多个单独的 SQL 查询,在大多数情况下默认情况下不允许这样做。也许您已将 SQL 设置为接受串联查询,但通常这是不明智的,而且不太可能。
选择。您可以创建PROCEDURE、FUNCTION 或类似的 .
您也没有将列名包含在反引号中,这是非常可取的。
修复你的 SQL:
目前您有:
SET @Month = month(TIMESTAMPADD(month, -1, CAST(now() AS DATE)));
Set @firstDay = CONCAT('01','/', @month, '/',year(now()));
SET @lastDay = last_day(TIMESTAMPADD(month, -1, CAST(now() AS DATE)));
SELECT count(*) AS M1 FROM APPEL where CAST(D_CREATION AS DATE)
BETWEEN @firstDay and @lastDay";
这可以更简洁地写成:
SELECT COUNT(*) as M1 FROM APPEL WHERE CAST(`D_CREATION` AS DATE) BETWEEN
(LAST_DAY(CURDATE() - INTERVAL 1 MONTH) + INTERVAL 1 DAY) AND LAST_DAY(CURDATE())
这将列出当月第一天和最后一天之间的所有结果。我从您的代码中不清楚您到底想要达到什么,但看起来您可能想要上个月的列表,在这种情况下您可以使用:
SELECT COUNT(*) as M1 FROM APPEL WHERE CAST(`D_CREATION` AS DATE) BETWEEN
(LAST_DAY(CURDATE() - INTERVAL 2 MONTH) + INTERVAL 1 DAY)
AND LAST_DAY(CURDATE() - INTERVAL 1 MONTH)
推荐阅读
- javascript - 具有新创建组件的 A 实体
- python - Python点云数据到表面拟合/功能
- spring-integration - 当需要轮询器并且它具有属性 max-messages-per-poll 时,具有入站通道适配器属性“max-rows”有什么意义?
- python - 如何修复 Python Enum - AttributeError(name) from None 错误?
- refactoring - 如何使用 Roslyn 重命名所有符号?
- c# - 如何在后台异步执行线程时加载新页面
- c# - 如何正确配置 `ConfigureServices` 方法的 `services.AddDbContext`
- reactjs - 如何在主题定义本身中使用断点
- postgresql - 搜索表中任意记录 X 距离内的所有记录
- javascript - 有没有办法检测 URL 是否能够在 Iframe 中加载