1

PDO SQLSRV を使用して、制限 (TOP) のあるテーブルからデータを選択しようとしています。しかし、私がこれを行うとき。

$limit = 20;

$sql = "SELECT TOP :rowsLimit * FROM TABLE ORDER BY id DESC";
$query = $this->db->prepare($sql);
$parameters = array(':rowsLimit' => $limit);

$query->execute($parameters);

このようなエラーが発生します。

Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 102 [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '@P1'.

パラメータを削除して代わりに bindValue を追加しようとしましたが、これらのいずれでも同じエラーが発生します。

$query->bindValue(':rowsLimit', (int) trim($limit), PDO::PARAM_INT);

また

$query->bindValue(':rowsLimit', intval(trim($limit)), PDO::PARAM_INT);

では、PDO SQLSRV で TOP のパラメーターをバインドするにはどうすればよいでしょうか?

4

1 に答える 1

3

値にパラメーターを使用することはできませんがTOP、その問題には回避策があります。

あなたがする必要があるのは、構文を使用して手動で一番上の行ROW_NUMBER() OVER()を除外することです。@x

例については、sqlfiddle を参照してください

于 2015-07-18T11:31:20.700 に答える