Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengikat Susunan Rentetan dengan Cekap pada Klausa MySQL WHERE IN(?) Menggunakan Penyata Disediakan mysqli PHP?

Bagaimana untuk Mengikat Susunan Rentetan dengan Cekap pada Klausa MySQL WHERE IN(?) Menggunakan Penyata Disediakan mysqli PHP?

Linda Hamilton
Lepaskan: 2024-12-24 01:57:13
asal
988 orang telah melayarinya

How to Efficiently Bind an Array of Strings to a MySQL WHERE IN(?) Clause Using PHP's mysqli Prepared Statements?

Mengikat Tatasusunan Rentetan ke Klausa WHERE IN(?)

Mengikat tatasusunan nilai ke klausa WHERE IN(?) ialah tugas MySQL biasa. Apabila menggunakan penyataan yang disediakan mysqli PHP, ia boleh menjadi sukar untuk dicapai jika anda tidak biasa dengan batasan dan nuansa fungsi bind_param().

Masalahnya

Anda mungkin menghadapi masalah apabila cuba mengikat tatasusunan nilai pada klausa IN(?) menggunakan bind_param(), mengakibatkan pelaksanaan yang tidak berjaya.

Penyelesaian

Terdapat pelbagai cara untuk mendekati tugasan ini, bergantung pada versi PHP yang anda gunakan:

PHP 8.2 dan Di atas

  • execute_query() function: Fungsi ini membolehkan anda menghantar terus tatasusunan nilai kepada IN(?). Ia memudahkan proses dengan satu baris kod.

PHP 8.1

  • Melalui tatasusunan untuk melaksanakan(): Dalam PHP 8.1, anda boleh menghantar tatasusunan terus untuk melaksanakan() untuk pernyataan yang disediakan, menjadikannya lebih mudah untuk mengikat berbilang nilai.

Versi PHP yang lebih awal

Untuk versi yang lebih lama, pendekatan yang lebih terperinci diperlukan:

  1. Buat rentetan dengan seberapa banyak tanda soal (?) sebagai bilangan elemen dalam tatasusunan.
  2. Tambah rentetan dengan pemegang tempat pada rentetan pertanyaan.
  3. Buat rentetan jenis menggunakan str_repeat() untuk mengikat data dengan jenis yang betul (cth., 's' untuk rentetan).
  4. Ikat elemen tatasusunan pada pernyataan menggunakan operator pembongkar hujah (...) dalam bind_param().
  5. Laksanakan pernyataan dan dapatkan hasilnya data.

Contoh Kod

Berikut ialah contoh menggunakan pendekatan versi PHP terdahulu:

$array = ['Nashville', 'Knoxville'];
$in = str_repeat('?,', count($array) - 1) . '?';
$sql = "SELECT name FROM table WHERE city IN ($in)";
$stmt = $mysqli->prepare($sql); // prepare
$types = str_repeat('s', count($array)); // types
$stmt->bind_param($types, ...$array); // bind array at once
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_all(MYSQLI_ASSOC);
Salin selepas log masuk

Dengan memahami pendekatan ini, anda boleh mengikat tatasusunan rentetan dengan cekap ke klausa WHERE IN(?) menggunakan pernyataan yang disediakan mysqli, memastikan kejayaan pelaksanaan pertanyaan anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Susunan Rentetan dengan Cekap pada Klausa MySQL WHERE IN(?) Menggunakan Penyata Disediakan mysqli PHP?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan