在我的控制器中:
$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注入的查询吗?
答案 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到本示例中的许多页面之一。