MySQL のプリペアド ステートメントを使用した LIMIT キーワード
この質問は、プリペアド ステートメントを使用するときに LIMIT 句が期待どおりに機能しない問題を解決します。 MySQL の PDO ライブラリを使用します。
提供されたコード内スニペット:
<pre class="brush:php;toolbar:false"> $comments = $db->prepare($query); /* where $db is the PDO object */ $comments->execute(array($post, $min, $max));
パラメータ $min と $max は、PDOStatement::execute メソッドによって文字列として扱われます。その結果、最終的な SQL ステートメントは次のようになります:
LIMIT '0', '10'
MySQL では LIMIT 句に数値が必要なため、構文エラーが発生します。
考えられる解決策:
この問題を解決するには、次の点を考慮してください。オプション:
パラメータを手動でバインド:
文字列補間の使用:
例:
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
エミュレートされた準備を無効にする:
注:
これらのメソッドを使用すると、プリペアド ステートメントで LIMIT 句を正しく使用できるようになります。
以上がMySQL のプリペアド ステートメントで LIMIT が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。