Menggunakan Kata Kunci LIMIT dalam Penyata Disediakan MySQL
Apabila menggunakan pernyataan yang disediakan dalam MySQL dengan PDO, anda mungkin menghadapi masalah dengan kata kunci LIMIT. Pertanyaan berikut:
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ?, ?
tidak akan berfungsi dengan pernyataan PDO yang disediakan, sambil mengubahnya kepada LIMIT 0, 10 akan. Isu ini berpunca daripada cara PDO mengendalikan parameter.
Pengikatan Parameter PDO
PDOStatement::execute() merawat semua parameter input sebagai rentetan secara lalai. Akibatnya, parameter $min dan $max dalam klausa LIMIT akan dimasukkan sebagai rentetan. MySQL kemudiannya akan menghuraikan pertanyaan sebagai:
LIMIT '0', '10'
membawa kepada ralat penghuraian.
Penyelesaian
Terdapat beberapa cara untuk menyelesaikan isu ini :
$comments->bindParam(1, $post, PDO::PARAM_STR); $comments->bindParam(2, $min, PDO::PARAM_INT); $comments->bindParam(3, $max, PDO::PARAM_INT);
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Dengan melaksanakan salah satu daripada penyelesaian ini, anda boleh berjaya menggunakan kata kunci LIMIT dengan pernyataan yang disediakan dalam MySQL.
Atas ialah kandungan terperinci Bagaimana Menggunakan LIMIT dengan betul dalam Penyata Disediakan MySQL dengan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!