Rumah  >  Artikel  >  pangkalan data  >  Cara Melepasi Parameter Tatasusunan dan Menggunakan Klausa LIMIT dengan PDO

Cara Melepasi Parameter Tatasusunan dan Menggunakan Klausa LIMIT dengan PDO

Barbara Streisand
Barbara Streisandasal
2024-10-23 19:37:01931semak imbas

How to Pass Array Parameters and Use LIMIT Clause with PDO

Melalui Parameter Tatasusunan dan Menggunakan Klausa LIMIT dengan PDO

Apabila bekerja dengan pertanyaan pangkalan data, ia boleh memberi manfaat untuk menghantar tatasusunan parameter kepada pernyataan PDO sambil menggunakan klausa LIMIT. Walau bagaimanapun, ini boleh mencabar apabila menggunakan kaedah bindParam untuk menetapkan parameter individu.

Dilema

Cabaran timbul kerana klausa LIMIT memerlukan nilai angka tertentu untuk diikat , manakala kaedah pelaksanaan menjangkakan tatasusunan parameter bernama. Ketidakserasian ini menghalang kedua-dua pendekatan daripada digunakan secara serentak.

Mengatasi Isu

Penyelesaian terletak pada melumpuhkan tetapan lalai PDO::ATTR_EMULATE_PREPARES. Apabila didayakan, PDO secara dalaman menjana SQL dinamik dan memetik nilai, pada asasnya meniru kenyataan yang disediakan. Walau bagaimanapun, tingkah laku lalai ini mengganggu penghantaran parameter yang dinamakan.

Melumpuhkan Emulated Prepares

Dengan menetapkan PDO::ATTR_EMULATE_PREPARES kepada false menggunakan kaedah setAttribute, tingkah laku lalai dilumpuhkan . Ini membolehkan PDO menggunakan pernyataan yang disediakan sebenar, membolehkan pengikatan parameter yang dinamakan sambil masih menggunakan klausa LIMIT.

Contoh Penggunaan

<code class="php">$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(':id' => $id, ':limit1' => $limit1, ':limit2' => $limit2)); // Works!</code>

Pertimbangan Prestasi

Persediaan yang ditiru digunakan secara lalai untuk MySQL untuk meningkatkan prestasi. Melumpuhkan persediaan yang dicontohi mungkin sedikit mengurangkan prestasi, tetapi ia membolehkan lebih fleksibiliti dalam pengikatan parameter.

Sumber Tambahan

Untuk mendapatkan maklumat lanjut tentang topik ini, rujuk sumber berikut:

  • [PDO MySQL: Gunakan PDO::ATTR_EMULATE_PREPARES atau tidak?](https://stackoverflow.com/questions/3273325/pdo-mysql-use-pdo-attr-emulate-prepares-or -bukan)

Atas ialah kandungan terperinci Cara Melepasi Parameter Tatasusunan dan Menggunakan Klausa LIMIT 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