CodeIgniter 4中无法打印最后执行的SQL查询,该如何解决?
CodeIgniter 4 打印最后执行SQL查询的正确方法
你之前的写法不符合CI4的规范,按下面的步骤调整就能解决问题:
1. 先开启查询日志
CI4默认未启用查询日志,需要先打开:
- 打开
app/Config/Database.php,找到对应数据库组(比如default)的配置,设置logQueries = true; - 或者在代码里临时开启:
$this->db->enableQueryLogs();
2. 正确获取并打印最后查询
CI4中获取最后执行查询的方法是getLastQuery(),注意两个关键点:
- 模型里直接用
$this->db调用即可,无需额外定义$db变量 getLastQuery()返回的是Query对象,必须转成字符串才能正常输出
修正后的代码示例:
public function saveForm($result2){ // 临时开启查询日志(如果配置文件里没开的话) $this->db->enableQueryLogs(); $query = $this->db->table("reg_form")->insert($result2); // 转换为字符串后输出 echo (string)$this->db->getLastQuery(); // return $query; }
补充:自定义数据库连接的情况
如果用的是非默认数据库连接,先获取连接实例再操作:
$db = \Config\Database::connect('你的连接组名称'); $db->enableQueryLogs(); // 执行插入操作 echo (string)$db->getLastQuery();
内容的提问来源于stack exchange,提问作者user88
相关产品推荐
相关产品推荐

