Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengendalikan Senarai Parameter Bersaiz Dinamik dalam Penyata Disediakan MySQL?

Bagaimana untuk Mengendalikan Senarai Parameter Bersaiz Dinamik dalam Penyata Disediakan MySQL?

DDD
Lepaskan: 2024-12-03 03:14:09
asal
402 orang telah melayarinya

How to Handle Dynamically Sized Parameter Lists in MySQL Prepared Statements?

Senarai Parameter Bersaiz Dinamik dalam Penyata Disediakan MySQL

Apabila membina pernyataan yang disediakan MySQL dalam PHP, persoalan tentang cara mengendalikan pertanyaan dengan bilangan argumen yang berubah-ubah timbul. Sebagai contoh, pertimbangkan pertanyaan seperti ini:

SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)
Salin selepas log masuk

Bilangan ID dalam klausa IN berbeza dengan setiap pelaksanaan.

Penyelesaian Kemungkinan

Pelbagai pendekatan wujud untuk menangani cabaran ini:

  1. Penyelesaian 1: Pembolehubah Dummy dan Berbilang Panggilan

    • Buat penyataan yang menerima bilangan pembolehubah tetap (mis. 100) dan isi slot yang tidak digunakan dengan nilai tiruan.
    • Laksanakan berbilang panggilan untuk lebih besar set.
  2. Penyelesaian 2: Pertanyaan Tidak Disediakan

    • Bina pertanyaan secara dinamik dan laksanakannya, memastikan perlindungan yang ketat terhadap suntikan serangan.

Penyelesaian Optimum

Walau bagaimanapun, pilihan lain menawarkan kecekapan yang lebih baik:

  1. Jadual Sementara Pendekatan

    • Buat jadual sementara dan masukkan setiap nilai parameter ke dalamnya.
    • Lakukan cantuman ringkas terhadap jadual sementara.
  2. Klausa IN Dinamik

    • Bina pertanyaan secara dinamik dengan pemegang tempat untuk klausa IN menggunakan praisi implode dan tatasusunan fungsi.
    • Contohnya:

      $dbh = new PDO(...);
      $parms = [12, 45, 65, 33];
      $inclause = implode(',', array_fill(0, count($parms), '?')); // = ?,?,?,?
      $preparesql = sprintf('SELECT age, name FROM people WHERE id IN (%s)', $inclause);
      $st = $dbh->prepare($preparesql);
      $st->execute($parms);
      Salin selepas log masuk

Pendekatan pertama mungkin lebih cekap untuk set besar, manakala yang kedua adalah sesuai untuk yang lebih kecil.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Senarai Parameter Bersaiz Dinamik dalam Penyata Disediakan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan