我有下面这段代码,它是我从model中摘取的,
...
$select = $this->_db->select()
->from($this->_name)
->where('shipping=?',$type)
->where('customer_id=?',$userid);
echo $select; exit; // which gives exact mysql query.
.....
当我在zend like中使用update查询时,
$up_value = array('billing'=> '0');
$this->update($up_value,'customer_id ='.$userid.' and address_id <> '.$data['address_Id']);
在这里,我想知道确切的mysql查询。有没有可能在zend中打印mysql查询?亲切的忠告
发布于 2011-10-12 11:30:56
Select对象在Zend Framework中有一个__toString()方法。
来自Zend Framework手册:
$select = $db->select()
->from('products');
$sql = $select->__toString();
echo "$sql\n";
// The output is the string:
// SELECT * FROM "products"
另一种解决方案是使用Zend_Db_Profiler。即
$db->getProfiler()->setEnabled(true);
// your code
$this->update($up_value,'customer_id ='.$userid.' and address_id <> '.$data['address_Id']);
Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery());
Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams());
$db->getProfiler()->setEnabled(false);
发布于 2013-05-13 20:28:43
来自>= 2.1.4
echo $select->getSqlString()
发布于 2012-03-01 17:58:20
我已经浏览了上百页,谷歌了很多,但我没有找到任何确切的解决方案。最后,这对我来说是有效的。不管你在控制器或模型中处于什么位置。这段代码在任何地方都适用于我。就用这个吧
//Before executing your query
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$db->getProfiler()->setEnabled(true);
$profiler = $db->getProfiler();
// Execute your any of database query here like select, update, insert
//The code below must be after query execution
$query = $profiler->getLastQueryProfile();
$params = $query->getQueryParams();
$querystr = $query->getQuery();
foreach ($params as $par) {
$querystr = preg_replace('/\\?/', "'" . $par . "'", $querystr, 1);
}
echo $querystr;
最终,这件事对我起作用了。
https://stackoverflow.com/questions/7723657
复制相似问题