我试图在ZF2中使用TableGateway
类和Mysqli
驱动程序,但是遇到了很多问题。
由于某种原因,我用变量添加的任何Where
子句都不会被引用,并且在执行查询时它会抛出错误:
使用sql:...
无法生成语句
给我带来问题的代码是:
<?php
class MyTable extends Zend\Db\TableGateway\TableGateway
{
public function get_count($id)
{
$count = $this->select(function (Zend\Db\Sql\Select $select) use ($id) {
$select->columns([
'count' => 'COUNT(field)',
]);
$select->join(['alias1' => 'other_table'], 'thing = alias1.thing', []);
$select->where([
'main_table.id' => $id,
'alias1.active' => 1,
]);
})->current();
return $count;
}
}
当我查看错误时,它只显示?
所提供的实际值应该是。
如果,我直接从适配器中选择:
// build select object similar to above example
$selectString = $sql->getSqlStringForSqlObject($select);
$results = $this->dbAdapter->query($selectString, Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
然后它完美无缺。但是我必须使用这个getSqlStringForSqlObject
我觉得很奇怪。在我的其他项目中,我正在使用PDO驱动程序而且我从未遇到过这样的问题,但是对于这个项目,mysqli驱动程序是必需的。
如何正确地将值提供给引用的位置?