1

我正在尝试使用 ZF2 和 MSSQL 2008 使以下谓词起作用。

$select = new Select();
$select -> from("MyTable");

$predicateIn = new Predicate\In('Bad Name', array(
"A",
"B",
"C"
));

$select -> where(array($predicateIn));
$resultSet = $this -> selectWith($select);

这是我得到的错误:

[Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near 'Bad'

打印生成的语句会显示以下内容,并且找不到解决方法。

SELECT "MyTable".* FROM "MyTable" WHERE "Bad" "Name" IN ('A', 'B', 'C') 

任何额外的引号都会被转义,并且使用 [Bad Name] 会导致相同的错误。我难住了。

4

1 回答 1

1

我最终做了以下工作:

$select = new Select();
$select -> from("MyTable")    
$platform = $this->adapter->getPlatform();
$filterList = array("A","B","C")

$predicateIn = $platform->quoteIdentifierChain(array('MyTable','Bad Name'));
$predicateIn .= " in (";
$predicateIn .= $platform->quoteValueList($filterList);
$predicateIn .= ")";

$select -> where(array($predicateIn));
$resultSet = $this -> selectWith($select);

我仍然想让 Predicate\In() 工作。

于 2013-01-09T03:30:09.323 回答