2013-12-14 152 views
0

我试图从使用SQL如下表筛选数据:添加where子句的SQL语句

$select= new \Zend\Db\Sql\Select ; 
$select->from('questions'); 
$select->where(array('questions.id'=>$value)); 
$select->columns(array('user_id','description')); 

$select->join('users', "users.id = questions.user_id", array('username','password'), 'left'); 
echo $select->getSqlString(); 

$resultSet = $this->tableGateway->selectWith($select); 

return $resultSet; 

没有$select->where(array('questions.id'=>$value));查询执行没关系,我可以得到所有的数据库值。否则,如果我添加声明,我得到这个错误:

Attempting to quote a value without specific driver level support 
can introduce security vulnerabilities in a production environment. 

我该如何纠正这一问题的where子句工作?

回答

0

您可能会发现它回显了正在生成该错误的SQL字符串。假设你只是做了调试,删除该行应该修复它。或者,您可以通过类似的平台对象的功能:

echo $select->getSqlString($this->tableGateway->getAdapter()->getPlatform()); 
+0

是啊..它的工作,但只是有点担心该声明。谢谢很多。 – Joss

+0

我认为这意味着select对象不知道如何在查询中引用值,因为select对象本身并不知道您使用的数据库类型。当查询最终运行时,它使用数据库适配器完成,它确实知道数据库的类型。 –