LIMIT 句を使用した PDO パラメータの配列の受け渡し
概要:
PDO を使用する場合の場合、パラメーターの配列を渡しながら LIMIT 句を同時に使用するのは難しい場合があります。この記事では、この問題の解決策を提供します。
問題ステートメント:
次の SQL クエリがあるとします:
SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2
これを実行したいと考えています。以下に示すように、パラメータの配列を使用してクエリを実行します。
$stmt->execute($array);
ただし、LIMIT パラメータ (:limit1 および :limit2) にbindParam() メソッドを使用すると、エラーが発生します。
解決策:
解決策は、PDO::ATTR_EMULATE_PREPARES のデフォルトの PDO 設定を無効にすることです。この設定は基本的に、プリペアド ステートメントをネイティブに使用するのではなく、プリペアド ステートメントをエミュレートするように PDO に指示します。
この設定を無効にするには:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
この設定を無効にすると、クエリを準備して実行できます。 LIMIT 値を含むパラメータの配列:
$stmt = $pdo->prepare($sql); $stmt->execute(array(5)); //works!
影響:
PDO::ATTR_EMULATE_PREPARES を無効にすると、準備されたエミュレーションのオーバーヘッドが削除されるため、パフォーマンスが向上します。発言。ただし、パフォーマンス上の理由により、この設定はデフォルトで有効になっていることに注意してください。
追加リソース:
以上がPDO で LIMIT 句を使用して配列パラメータを渡すときのエラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。