Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyelesaikan Ralat Apabila Melepasi Parameter Tatasusunan dengan Klausa LIMIT dalam PDO?

Bagaimana untuk Menyelesaikan Ralat Apabila Melepasi Parameter Tatasusunan dengan Klausa LIMIT dalam PDO?

Linda Hamilton
Linda Hamiltonasal
2024-10-23 19:46:31625semak imbas

How to Resolve Error When Passing Array Parameters with LIMIT Clause in PDO?

Melalui Tatasusunan Parameter PDO dengan Klausa LIMIT

Pengenalan:

Apabila bekerja dengan PDO , ia boleh mencabar untuk lulus tatasusunan parameter dan menggunakan klausa LIMIT secara serentak. Artikel ini menyediakan penyelesaian kepada isu ini.

Pernyataan Masalah:

Memandangkan pertanyaan SQL berikut:

SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%')
LIMIT :limit1, :limit2

Anda mahu melaksanakan ini pertanyaan menggunakan tatasusunan parameter, seperti yang dilihat di bawah:

$stmt->execute($array);

Walau bagaimanapun, menggunakan kaedah bindParam() untuk parameter LIMIT (:limit1 dan :limit2) mengakibatkan ralat.

Penyelesaian:

Penyelesaian terletak pada melumpuhkan tetapan PDO lalai PDO::ATTR_EMULATE_PREPARES. Tetapan ini pada asasnya mengarahkan PDO untuk meniru pernyataan yang disediakan, dan bukannya menggunakannya secara asli.

Untuk melumpuhkan tetapan ini:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Setelah tetapan ini dilumpuhkan, pertanyaan boleh disediakan dan dilaksanakan dengan tatasusunan parameter, termasuk nilai LIMIT:

$stmt = $pdo->prepare($sql);
$stmt->execute(array(5)); //works!

Implikasi:

Melumpuhkan PDO::ATTR_EMULATE_PREPARES boleh meningkatkan prestasi, kerana ia menghilangkan overhed meniru yang disediakan kenyataan. Walau bagaimanapun, perlu diambil perhatian bahawa tetapan ini didayakan secara lalai atas sebab prestasi.

Sumber Tambahan:

  • [PDO MySQL: Gunakan PDO:: ATTR_EMULATE_PREPARES atau tidak?](https://pdosql.org/pdo-mysql-use-pdo-attr-emulate-prepares-or-not/)

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Apabila Melepasi Parameter Tatasusunan dengan Klausa LIMIT dalam 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