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 に答える