1

我在使用 ZF2 的 Sql 对象时写了一个非常简单的查询...

$sql = new Sql($this->adapter);
$select = $sql->select()
->from('school')
->where(array("id = ?" => $id));

回声 $select->getSqlString();

但是,此返回的查询包含表名周围的“引号”......

SELECT "school".* FROM "school" WHERE id = '4'

这显然会使查询不正确。有谁知道它为什么这样做以及如何阻止它?

4

1 回答 1

2

恕我直言,getSqlString 方法是无稽之谈。如果您查看它的内部,您会发现它没有将驱动程序信息传递到呈现 SQL 字符串的函数中。结果,渲染器假定一些默认查询模板并简单地引用该值而不是使用 Mysql 模板。

尝试使用这个:

$select = $sql->select()
    ->from('school')
    ->where(array("id = ?" => $id));
$sql = new Sql($this->adapter);
$selectString = $sql->getSqlStringForSqlObject($select);

如果在尝试仅使用 Zend\Db\Sql\Select 对象正确呈现“限制”子句几个小时后发现这一点。

于 2013-07-05T11:56:09.480 回答