1 回答
TA贡献1856条经验 获得超17个赞
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)
- 1 回答
- 0 关注
- 356 浏览
添加回答
举报