不能在ZF2 pdo数据库中使用准备

时间:2015-02-03 21:41:32

标签: sql pdo zend-framework2

在我的控制器中:

    $this->db = $this->getServiceLocator()->get('db');

    $statement = $this->db->prepare('SELECT * FROM test');
    $result = $statement->execute();


    foreach($result as $r)
        var_dump($r);

我得到了: Fatal error: Call to undefined method Zend\Db\Adapter\Adapter::prepare()

如果我使用$this->db->query('SELECT * FROM test')则可行。

为什么准备不存在?它是 query 一个抽象,用于检查ZF2中sql注入的查询吗?

2 个答案:

答案 0 :(得分:1)

Zend\Db\Adapter\Adapter不会延伸PDO,因此不必使用prepare方法。相反,请尝试使用createStatement。只需查看源代码here;

答案 1 :(得分:0)

你需要准备一份声明,所以你应该使用' Sql'和'选择'这样做的对象。

use Zend\Db\Sql\Sql;

$sql = new Sql($adapter);
$select = $sql->select();
$select->from('test');

$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();

这是在ZF2文档中。以下是a link到本示例中的许多页面之一。