PDO で LIMIT 句を使用した配列パラメータの受け渡し
PHP では、PDOStatement クラスにより、パラメータ化された値を使用して SQL クエリを実行する方法が提供されます。ただし、LIMIT 句を使用する場合、bindParam() メソッドを使用したパラメータのバインドは機能しません。
この問題を解決するには、次の解決策を検討してください。
<code class="php">$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :offset, :limit"; $stmt = $pdo->prepare($sql); // Turn off PDO emulation of prepared statements for MySQL $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $array = [':id' => 5]; // Bind the LIMIT parameters $stmt->bindParam(':offset', $limit1, PDO::PARAM_INT); $stmt->bindParam(':limit', $limit2, PDO::PARAM_INT); // Execute the query $stmt->execute($array); $results = $stmt->fetchAll();</code>
PDO エミュレーションを無効にすることで、プリペアド ステートメント (MySQL のデフォルト) を使用すると、LIMIT 句内でパラメータ化された値を使用できるようになります。このメソッドにより、指定されたパラメーターを使用してクエリが正しく実行されることが保証されます。
エミュレーションをオフにするとパフォーマンスに影響を与える可能性があることに注意してください。詳細については、PDO MySQL: PDO::ATTR_EMULATE_PREPARES を使用するかどうか? のドキュメントを参照してください。
以上がPDO で LIMIT 句を使用して配列パラメータをバインドできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。