如何解决如何在codeigniter模型中打印SQL语句
| 我的模型中有一条sql语句, 然后我说$query = $this->db->query($sql,array(fields,fields1);
if ($query) {
return true:
} else {
echo \"failed\";
return false;
}
我的查询总是失败,如何获取php以打印发送到数据库的确切sql语句?并将其显示在我的php视图的页面上
解决方法
要显示查询字符串:
print_r($this->db->last_query());
要显示查询结果:
print_r($query);
Profiler类将在页面底部显示基准测试结果,已运行的查询以及$ _POST数据。
要启用事件探查器,请将以下行放在Controller方法中的任何位置:
$this->output->enable_profiler(TRUE);
分析用户指南:
https://www.codeigniter.com/user_guide/general/profiling.html
,您可以使用此:
$this->db->last_query();
\“返回上一次运行的查询(查询字符串,而不是结果)。
Reff:https://www.codeigniter.com/userguide3/database/helpers.html
,您可以显示ActiveRecord生成的SQL:
在查询运行之前:
$this->db->_compile_select();
并运行后:
$this->db->last_query();
,如果您需要对查询进行快速测试,这对我很有用
echo $this->db->last_query(); die;
,在尝试不成功使用_compiled_select()
或get_compiled_select()
之后,我仅打印了db
对象,您可以在queries
属性中看到查询。
自己尝试:
var_dump( $this->db );
如果您知道只有一个查询,则可以直接打印它:
echo $this->db->queries[0];
,您可以在末尾简单地使用它。
echo $this->db->last_query();
,有一个新的公共方法get_compiled_select
,可以在运行查询之前将其打印出来。 _compile_select
已被保护,因此无法使用。
echo $this->db->get_compiled_select(); // before $this->db->get();
,last_query()
或get_compiled_select()
都不适合我,因此对pedro的代码稍作更改对我也没问题。不要在构建中包含->get()
,它必须在-> get()之前
echo $this->EE->db->_compile_select();
,我尝试使用@Chumillas的答案和@chhameed \的答案,但由于sql错误,因此无法正常工作。因此,我找到了新的方法,例如:
在return $sql;
之前插入echo $sql; flush(); exit;
ѭ25的16ѭ功能
,我遇到了完全相同的问题,并最终找到了解决方案。我的查询运行如下:
$result = mysqli_query($link,\'SELECT * FROM clients WHERE \' . $sql_where . \' AND \' . $sql_where2 . \' ORDER BY acconame ASC \');
为了显示sql命令,我要做的就是创建一个变量($ resultstring),其内容与查询的内容完全相同,然后回显它,如下所示:<?php echo $resultstring = \'SELECT * FROM clients WHERE \' . $sql_where . \' AND \' . $sql_where2 . \' ORDER BY acconame ASC \'; ?>
有用!
,您有多种获取SQL查询的方法。
执行查询后
您应该使用以下内容:
$sql = $this->db->last_query();
执行查询之前(特定的SQL指令方法)
CodeIgnitier不提供在执行之前获取SQL的通用方法,必须使用特定的方法。
获取一个SELECT查询
$sql = $this->db->get_compiled_select()
获取一个INSERT查询
$sql = $this->db->get_compiled_insert()
获取更新查询
$sql = $this->db->get_compiled_update()
获取DELETE查询
$sql = $this->db->get_compiled_delete()
,在要打印的查询之后立即添加此行。
例:
$ query = $ this-> db-> query(\'SELECT * FROM table WHERE condition \');
//添加此行。
var_dump($ this-> db-> last_query());
出口();
要么
echo $ this-> db-> last_query();
,使用get_compiled_select()
检索查询而不是替换查询
,我在这里阅读了所有答案,但无法获得
echo $this->db->get_compiled_select();
工作,它给了我类似的错误,
在第XX行的控制器中的上下文\'Welcome \'中调用受保护的方法CI_DB_active_record :: __ compile_select()
所以我从文件\\system\\database\\DB_active_rec.php
的下面一行中删除了protected
,并且可以正常工作
protected function _compile_select($select_override = FALSE)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。