对于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/modell.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;
?