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

Linda Hamilton
Lepaskan: 2024-10-23 19:46:31
asal
624 orang telah melayarinya

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
Salin selepas log masuk

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

$stmt->execute($array);
Salin selepas log masuk

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);
Salin selepas log masuk

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

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

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!