Zend framework2 Zend Framework 2 Sql\选择添加";将引号放入查询中

Zend framework2 Zend Framework 2 Sql\选择添加";将引号放入查询中,zend-framework2,Zend Framework2,我使用ZF2的Sql对象编写了一个非常简单的查询 $sql = new Sql($this->adapter); $select = $sql->select() ->from('school') ->where(array("id = ?" => $id)); echo$select->getSqlString() 但是,此返回的查询在表名周围包含“引号” SELECT "school".* FROM "school" WHERE id = '4' 这显然会导

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

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

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

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

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

我觉得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对象正确呈现“limit”子句几个小时后发现此问题。

这不是问题,查询仍应正常执行。这就是它从这个方法获得输出的方式。尝试执行它,您将看到:)谢谢Andrew,如果不抛出sql查询错误,我无法让它执行。我能看到的唯一一件看起来不正确的事情是查询输出中的引号。错误是什么,它肯定是SQL sytax错误吗?这应该可以正常工作,因为您还可以去掉“?”这很好:->where(array(“id”=>$id));