通过Zend Framework的select()传递列名和空格

时间:2015-06-24 23:53:20

标签: php mysql zend-framework

我有一个数据库表,其名称中包含一个空格:Audio book s。我想select all rows where Audio books = 1。我使用Zend Framework来执行此操作。我的功能如下:

 public function fetchAudio ()
 {
     $resultSet = $this->tableGateway->select(array('Audio books' => 1));
     return $resultSet;
 }

目标是选择所有行WHERE" Audio books" = 1。

网站正在返回此错误:

  

无法执行语句(42000 - 1064 - 您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在' books = 1&附近使用#39;在第1行)

如何使用该方法使用此列?

2 个答案:

答案 0 :(得分:0)

在列名中加一个空格是一个非常非常糟糕的主意。 SQL会将这样的查询解释为:SELECT your columnSELECT your AS column

您可能可以使用空格围绕列名称后面的刻度来逃避它,但只需从列名中取出空格!

无论如何,试试这个 - 值得一试:

$this->tableGateway->select(array('`Audio books`' => 1));

答案 1 :(得分:0)

您必须通过tableGateway简单地获取适配器并将SQL查询传递给它,而无需任何其他方法:

$sql = "SELECT * FROM books WHERE `Audio books` = 1";
     $resultSet = $this->tableGateway->getAdapter()->query($sql, Adapter::QUERY_MODE_EXECUTE);
     return $resultSet;