2012-04-11 44 views

回答

1

经过一番研究,我没有找到ZF对在这个同样的方式准备语句的支持。你唯一能做的就是像@Nikita Gopkalo发布的那样模仿它。

1

你可以尝试这样的

$sql = "SELECT * FROM table_name WHERE id = :id'"; 
$stmt = new Zend_Db_Statement_Pdo($this->_db, $sql); 
$stmt->execute(array(':id' => $id)); 
+1

真的能行这样的:http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html还是它只是一个仿真? – Karol 2012-04-11 10:48:33

+0

您不能在下次请求中重复使用这个完全相同的语句,而无需重新创建它,因此它不会以相同的方式工作。 – Karol 2012-06-27 08:06:35

3
$sql = "SELECT * FROM table_name WHERE id = :id "; 

$stmt = Zend_Registry::get("db")->prepare($sql); 

$data=array(array('id'=> $id); 

$stmt->execute($data); 

print_r($stmt->fetchAll()); 
0

你应该看看zend文档。

https://github.com/zendframework/zend-db/blob/master/doc/book/result-set.md

所以这里是一个示例代码。

<?php 

use Zend\Db\Adapter\Driver\ResultInterface; 
use Zend\Db\ResultSet\ResultSet; 

$statement = $driver->createStatement('SELECT * FROM users'); 
$statement->prepare(); 
$result = $statement->execute($parameters); 

if ($result instanceof ResultInterface && $result->isQueryResult()) { 
    $resultSet = new ResultSet; 
    $resultSet->initialize($result); 

    foreach ($resultSet as $row) { 
    echo $row->my_column . PHP_EOL; 
    } 
} 

?>