Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter是否可以在错误日志中显示MySQL查询?_Php_Codeigniter_Logging - Fatal编程技术网

Php CodeIgniter是否可以在错误日志中显示MySQL查询?

Php CodeIgniter是否可以在错误日志中显示MySQL查询?,php,codeigniter,logging,Php,Codeigniter,Logging,我的CodeIgniter日志中总是出现错误,例如 ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1 但如果没有上下文,这并没有多大帮助。是否有任何方法可以记录导致此错误的查询?检查您是否在插入的表中为主键定义了自动增量。我只是快速浏览了一下系统/数据库/DB_Driver.php(第323行)文件,它没有使用您选择的任何设置记录SQL查询。但是,如果您处于db_调试模式

我的CodeIgniter日志中总是出现错误,例如

ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1

但如果没有上下文,这并没有多大帮助。是否有任何方法可以记录导致此错误的查询?

检查您是否在插入的表中为主键定义了自动增量。

我只是快速浏览了一下
系统/数据库/DB_Driver.php
(第323行)文件,它没有使用您选择的任何设置记录SQL查询。但是,如果您处于db_调试模式,则应将这些消息打印到屏幕上

如果您不介意弄乱CI系统文件夹中的文件,您可以通过将
system/database/DB_Driver.php
(对于CI 2.0.1,第323行)更改为:


首先,您可以使用$this->db->last\u query()


因此,我们可以通过以下代码片段将查询作为字符串获取:

// strip out line returns, new lines and tabs
$query = str_replace( array("\r", "\n", "\t"), '', trim($this->db->last_query()) );
获得字符串后,我们可以登录到错误日志:

error_log( "Last database query: " . $query );
注意:根据您的应用程序逻辑和流量,随着时间的推移,这可能会在错误日志中增加大量的额外数据,因此我建议仅将其用作临时故障排除工具


希望这有帮助。

我没有。我有许多具有许多唯一索引的表,所以很难找到它。能够查看查询会让事情变得更好。将Codeigniter的错误报告设置为E_ALL,并确保database.php文件中的db_debug设置为TRUE。检查此扩展名以了解CI错误处理:我启用了E_ALL和db_debug,但查询仍然没有显示。感谢链接到扩展Marko,这是一个可能的解决方案。但是,没有本地的方法可以获得此功能吗?@Marko Aleksić:链接已经失效
error_log( "Last database query: " . $query );