升级到PHP7.3后SQL查询出现mybb_未定义常量警告如何解决?
报错核心原因
你代码中直接使用未加引号的mybb_,PHP会优先将其识别为常量,你没有提前定义这个常量,所以触发了警告。同时你原代码末尾缺失了$db->query()方法的闭合右括号,也会引发后续语法错误。
修复方案
方案1(推荐,符合MyBB开发规范)
MyBB内核已经预定义了全局常量TABLE_PREFIX存储表前缀,直接调用即可,无需硬编码前缀值,修改后代码如下:
$query = $db->query(" SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message FROM " . TABLE_PREFIX . "threads t INNER JOIN " . TABLE_PREFIX . "posts p ON (p.tid=t.tid) WHERE t.fid='333' AND t.visible='1' ORDER BY t.dateline DESC LIMIT 6 ");
方案2(硬编码前缀)
如果你确定要固定使用mybb_作为表前缀,给mybb_加上单引号声明为字符串即可:
$query = $db->query(" SELECT t.tid, t.fid, t.uid, t.username, t.subject, t.replies, t.views, t.lastposter, p.message FROM " . 'mybb_' . "threads t INNER JOIN " . 'mybb_' . "posts p ON (p.tid=t.tid) WHERE t.fid='333' AND t.visible='1' ORDER BY t.dateline DESC LIMIT 6 ");
内容的提问来源于stack exchange,提问作者Deva Store
相关产品推荐
相关产品推荐

