对于Phpcms v9 进行二次开发,数据的操作是不可避免的,虽然数据操作方法能很明显的看出sql语句,但还是没有直接输出sql语句来的直接,遗憾的是系统并没有直接提供这样的方法,需要自己来构造。
1.修改数据库驱动
phpcms/libs/classes/mysql.class.php
添加以下代码:
private $lastquerysql = '';
public function lastsql() {
return $this->lastquerysql;
}
//修改execute方法:
$this->lastqueryid = mysql_query($sql, $this->link) or $this->halt(mysql_error(), $sql);
$this->querycount++;
$this->lastquerysql = $sql; //给新增的lastquerysql 赋值
execute 方法被修改为:
private function execute($sql) {
$chestr = strtolower(trim($sql));
if(substr($chestr,0,6)=='select') {
if(!is_resource($this->link)) {
$this->connect('default');
}
}else {
$this->connect('write');
}
$this->lastqueryid = mysql_query($sql, $this->link) or $this->halt(mysql_error(), $sql);
$this->querycount++;
$this->lastquerysql = $sql; //新增
return $this->lastqueryid;
}
2.修改模型
phpcms/libs/classes/model.class.php
添加获取lastsql的方法
final public function lastsql(){
return $this->db->lastsql();
}
3.调用
使用自定义模型类查询完成之后,调用模型类的lastsql()方法即可,eg:
$db = pc_base::load_model('pcbanner_model');
$db->select();
$lastsql = $db->lastsql();
echo $lastsql;