2013-02-14 68 views
0

我写了一个非常简单的查询使用ZF2的SQL对象...Zend框架2 SQL 选择加入“引号进入查询

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

回声$选择 - > getSqlString();

然而,这将返回查询包含周围的表名“引号” ......

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

这显然使得查询不正确。没有人知道它为什么这个问题以及如何阻止它?

+1

这不是问题,查询应该仍然执行正常。这只是它从这种方法获得输出的方式。 尝试执行它,你会看到:) – Andrew 2013-02-14 16:04:00

+0

感谢安德鲁,我不能让它执行没有抛出一个SQL查询错误。我能看到的看起来不正确的唯一情况是查询输出中的引号。 – jonadams51 2013-02-15 13:39:08

+0

错误是什么,它绝对是一个SQL联合错误?这应该正常工作,因为它是 – Andrew 2013-02-15 13:44:36

回答

1

恕我直言,getSqlString方法是无稽之谈。如果你仔细看看它,你可以看到它不会将驱动程序信息传递给呈现SQL字符串的函数。结果渲染器会采用一些默认查询模板,并简单地引用该值而不是使用Mysql模板。使用这种

尝试:

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

如果试图正确地呈现“限制”条款只使用Zend的\ DB \ SQL \选择对象数小时后发现这一点。