我是 Zend Framework 2 的新手,我正在尝试将我的表连接到 TableGateway 并进行基本选择,如下所示:
SELECT * FROM <tableName> WHERE QMQT# = 1
在我的表模型中看起来像这样:
$rowset = $this->tableGateway->select(array('QMQT#' => $id));
问题似乎是查询中的 # 符号,因为我收到错误消息:
SQLSTATE[42S22]: Column not found: 0 [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0206 - Column "QMQT""#" not in specified tables. (SQLPrepare[0] at ext\pdo_odbc\odbc_driver.c:206)
我可以在普通的 PDO 中很好地准备和执行这个查询,但是通过 Zend 的 TableGateway 运行它会得到这个错误。Zend 中的表名中是否不允许使用井号/数字符号?有没有办法绕过这种过度转义?
谢谢你的任何建议...
编辑:
我也尝试了 quoteIdentifier() 函数来尝试解决这个问题:
$rowset = $this->tableGateway->select(array($this->tableGateway->getAdapter()->getPlatform()->quoteIdentifier('QMQT#') => $id));
但它所做的只是给我这个错误:
SQLSTATE[42000]: Syntax error or access violation: 0 [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token QMQT was not valid. Valid tokens: < > = <> <= !< !> != >= �< �> �= IN NOT. (SQLPrepare[0] at ext\pdo_odbc\odbc_driver.c:206)