我有一个数据库表,其名称中包含一个空格: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行)
如何使用该方法使用此列?
答案 0 :(得分:0)
在列名中加一个空格是一个非常非常糟糕的主意。 SQL会将这样的查询解释为:SELECT your column
为SELECT 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;