Codeigniter在运行时更改数据库配置

Hen*_*son 6 codeigniter

我可以在控制器中更改每个方法的数据库配置吗?

$db['default']['db_debug'] = TRUE;
Run Code Online (Sandbox Code Playgroud)

默认值是TRUE,虽然我需要在某种方法中将其设为false以捕获错误并执行其他操作(例如show 404 page).

当我尝试$this->config->load('database')它失败.

另一个问题 :

我可以检查一个不正确的查询并将其捕获到某些变量而不是将其显示给除了将db_debug配置设置为以外的用户FALSE吗?

Ant*_*llo 15

我检查了system/database/DB_Driver的代码,发现:

$this->db->db_debug = FALSE;
Run Code Online (Sandbox Code Playgroud)

将在我的控制器中工作以动态启用/禁用调试事项.


min*_*ost 0

要向用户隐藏错误的 SQL(和其他错误),您需要设置 php 错误报告级别。CodeIgniter 基本上以开发模式发布。

转到index.php并替换它

error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)

有了这个

error_reporting(0);
Run Code Online (Sandbox Code Playgroud)

这是执行此操作的快速方法。您还可以使用钩子来实现这一点,这样您就不必接触 CI 文件。您还可以向该挂钩添加逻辑,以便它仅在生产服务器上设置它。

为了调试 SQL,您可以创建一个继承自 CI_Model 的类,然后创建所有模型类来扩展该类。在该类中,您可以添加用于运行查询的代码,将查询写入日志,以便您可以更轻松地调试它们。如果查询本身很糟糕,这将无济于事,但您应该能够在达到这一点之前弄清楚这一点。