跳到主要内容

如何在CodeIgniter模型中打印SQL语句?

参考答案:

在CodeIgniter中,如果你想在模型中打印或查看执行的SQL语句,你可以通过开启数据库查询日志来实现。这允许你捕获在执行数据库操作期间执行的所有查询。下面是如何操作的步骤:

  1. 在你的database.php配置文件中,找到并启用$db['default']['save_queries']选项。将其设置为TRUE
$db['default'] = array(
    // ... 其他配置 ...
    'save_queries' => TRUE,
);
  1. 在你的模型中,执行数据库操作后,你可以使用$this->db->last_query()方法来获取最后执行的SQL语句。
class Your_model extends CI_Model {
    public function your_function() {
        // 执行数据库操作
        $this->db->select('*');
        $this->db->from('your_table');
        $query = $this->db->get();

        // 打印最后执行的SQL语句
        echo $this->db->last_query();

        // ... 其他代码 ...
    }
}
  1. 如果你想要获取所有执行的SQL语句,你可以使用$this->db->queries数组。这个数组会保存自开启save_queries选项以来执行的所有查询。
class Your_model extends CI_Model {
    public function your_function() {
        // 执行多个数据库操作
        // ...

        // 打印所有执行的SQL语句
        foreach ($this->db->queries as $query) {
            echo $query . "<br>";
        }

        // ... 其他代码 ...
    }
}

请注意,开启save_queries选项并打印SQL语句主要用于调试和开发目的。在生产环境中,建议关闭此选项以提高性能并保护敏感信息。

另外,CodeIgniter 4 引入了一些新的日志功能,你可以考虑使用日志库来记录SQL语句,而不是直接在模型中打印它们。这样可以更灵活地管理日志输出,并将其与其他日志消息一起存储和查看。