Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana Menggunakan LIMIT dengan betul dalam Penyata Disediakan MySQL dengan PDO?

Bagaimana Menggunakan LIMIT dengan betul dalam Penyata Disediakan MySQL dengan PDO?

DDD
DDDasal
2024-11-27 15:57:14940semak imbas

How to Correctly Use LIMIT in MySQL Prepared Statements with PDO?

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 :

  • Ikat Parameter Secara Individu: Nyatakan jenis setiap parameter menggunakan bindParam():
$comments->bindParam(1, $post, PDO::PARAM_STR);
$comments->bindParam(2, $min, PDO::PARAM_INT);
$comments->bindParam(3, $max, PDO::PARAM_INT);
  • Kecualikan Parameter daripada Pertanyaan: Alih keluar parameter $min dan $max daripada pertanyaan dan tentukannya sebagai sebahagian daripada pertanyaan:
$query = sprintf('SELECT id, content, date
    FROM comment
    WHERE post = ?
    ORDER BY date DESC
    LIMIT %d, %d', $min, $max);
  • Lumpuhkan Ditiru Menyediakan: Lumpuhkan persediaan yang dicontohi dalam pemacu MySQL:
$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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn