CodeIgniter查询关联groups表时出现MySQL Error 1064语法错误求助
MySQL Error 1064 语法错误(本地正常服务器报错)的解决方法
错误原因
groups是MySQL的保留关键字,如果托管服务器使用的是较低版本的MySQL(如5.6及更早),直接写groups as c会触发语法解析错误。本地环境可能用了更高版本的MySQL(对保留字的限制更宽松),所以能正常执行,但这种写法本身不符合标准SQL规范。
解决方法
- 用反引号
`包裹保留字groups,让MySQL明确识别为表名 - 推荐使用显式
JOIN语法替代旧的逗号分隔表的写法,代码可读性更强,也能避免潜在逻辑问题
修改后的模型代码
function get_all_query() { $sql = "SELECT b.id,b.first_name,b.last_name,b.username,b.email,c.name,FROM_UNIXTIME(b.created_on) as created_on,b.active FROM users_groups as a JOIN users as b ON a.user_id = b.id JOIN `groups` as c ON a.group_id = c.id"; return $this->db->query($sql)->result(); }
验证说明
- 反引号包裹
groups后,低版本MySQL会正确解析这个表名 - 显式JOIN语法更符合现代SQL编写习惯,也能清晰展示表之间的关联关系,降低后续维护成本
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

