You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8中含ORDER BY多字段的PHP SQL查询报错求助

解决方案

问题根源在于rank是MySQL 8.0的保留关键字,旧版本MySQL中它不属于保留字,因此之前的查询可以正常执行;升级后直接使用该字段名会触发语法解析错误。

直接修改SQL语句,将rank字段用反引号包裹,明确告诉MySQL这是字段名称而非关键字即可:

$query = "SELECT * FROM memo WHERE (memo_hidden = 0 OR memo_hidden IS null) AND memo_date='".$required_date."' ORDER BY programme_order, `rank`";

额外提醒:当前代码直接将$required_date变量拼接进SQL语句,存在SQL注入风险,建议改用PHP的预处理语句(如PDO或mysqli的prepare+execute机制)绑定参数,提升代码安全性。

内容的提问来源于stack exchange,提问作者craig-c

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:50:50