LIMIT Kata Kunci dengan Penyata Disediakan dalam MySQL
Soalan ini menangani isu di mana klausa LIMIT tidak berfungsi seperti yang diharapkan apabila menggunakan pernyataan yang disediakan dengan perpustakaan PDO dalam MySQL.
Dalam kod yang disediakan coretan:
<pre class="brush:php;toolbar:false"> $comments = $db->prepare($query); /* where $db is the PDO object */ $comments->execute(array($post, $min, $max));
Parameter $min dan $max dianggap sebagai rentetan oleh kaedah PDOStatement::execute. Akibatnya, pernyataan SQL akhir menjadi:
LIMIT '0', '10'
yang mengakibatkan ralat sintaks kerana MySQL memerlukan nilai berangka untuk klausa LIMIT.
Penyelesaian Yang Mungkin:
Untuk menyelesaikan isu ini, pertimbangkan perkara berikut pilihan:
Ikat Parameter Secara Manual:
Gunakan Interpolasi Rentetan:
Contoh:
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
Lumpuhkan Emulated Prepare:
Nota :
Kaedah ini akan membolehkan anda menggunakan klausa LIMIT dengan pernyataan yang disediakan dengan betul.
Atas ialah kandungan terperinci Mengapa LIMIT Tidak Berfungsi dengan Penyata Disediakan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!