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
相关产品推荐
相关产品推荐

