使用 PHP/CodeIgniter 在 MySQL 中获取最后执行的查询
Posted
技术标签:
【中文标题】使用 PHP/CodeIgniter 在 MySQL 中获取最后执行的查询【英文标题】:Get last executed query in MySQL with PHP/CodeIgniter 【发布时间】:2011-09-26 01:23:26 【问题描述】:如何获取我在 Windows 和 Linux 中的 mysql 中运行的最后一个查询?
我正在使用 php 和 CodeIgniter。在my_model.php
,我有:
$query1 = ( ...something... );
$query2 = ( ...something... );
$variables = ( .... something .... );
$this->db->query(" $query1 ... $variables .. $query2", array( $variables, ... ));
我需要在上面的代码 sn-p 之后执行最后一个查询。
谁能告诉我如何获得我的最后一个查询?
【问题讨论】:
据我所知,没有通用的“获取最后一个查询”功能。你需要它做什么? @Pekka,CodeIgniter 有这个内置的 :-) @Rocket 啊,很公平。 如果您正在调试,其他有用的功能是 mysql_errno(); // 返回最后一次 MySQL 操作的错误号 3 mysql_error(); // 返回上一次 MySQL 操作的错误描述 mysql_info(); // 返回上次查询的信息 【参考方案1】:用途:
$this->db->last_query();
Returns the last query that was run (the query string, not the result). Example:
$str = $this->db->last_query();
// Produces: SELECT * FROM sometable....
取自query helper functions手册中的示例
【讨论】:
得到这个:PHP 致命错误:未捕获的错误:调用未定义的方法 mysqli::last_query() @AhmadAmeri 请注意,答案是指 9 年前的 Codeignter 版本和 PHP。 您知道如何获取最新查询吗?【参考方案2】:在 CodeIgniter 中有一个辅助函数 $this->db->last_query();
。
这将返回最后一个查询的字符串。
但我想你可能会问如何获得结果,在这种情况下你会这样做:
$query1 = ( ...something... );
$query2 = ( ...something... );
$variables = ( .... something .... );
$query = $this->db->query(" $query1 ... $variables .. $query2", array( $variables, ... ));
foreach ($query->result() as $row)
//code goes here
如需了解更多信息,请查看CI's examples。
【讨论】:
【参考方案3】:在 config/database.php 中,必须设置配置数组:'save_queries' => TRUE,如果为 false,则 last_query() 函数不工作。
【讨论】:
以上是关于使用 PHP/CodeIgniter 在 MySQL 中获取最后执行的查询的主要内容,如果未能解决你的问题,请参考以下文章
从 URL 中删除 index.php - Codeigniter 2
在 OpenShift / PHP / CodeIgniter 上发送邮件