Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengikat Susunan Rentetan ke MySQLi WHERE IN (?) Klausa?

Bagaimana untuk Mengikat Susunan Rentetan ke MySQLi WHERE IN (?) Klausa?

Mary-Kate Olsen
Lepaskan: 2024-12-25 22:05:13
asal
425 orang telah melayarinya

How to Bind an Array of Strings to a MySQLi WHERE IN (?) Clause?

Mengikat Susunan Rentetan dalam Klausa WHERE IN (?) dengan MySQLi

Apabila bekerja dengan pernyataan yang disediakan MySQLi, adalah penting untuk memahami bagaimana untuk mengikat tatasusunan nilai ke klausa WHERE IN (?). Artikel ini menyediakan panduan komprehensif untuk menyelesaikan masalah ini dengan berkesan.

Cabaran

Matlamatnya adalah untuk mengikat secara dinamik pelbagai nama bandar kepada klausa WHERE IN dalam Kenyataan yang disediakan MySQLi. Walau bagaimanapun, kod yang diberikan pada mulanya gagal dilaksanakan kerana pengikatan tatasusunan yang salah.

Mengikat Tatasusunan Rentetan

Beberapa pendekatan wujud untuk mengikat tatasusunan rentetan. Jom teroka kaedah yang ada:

1. Fungsi execute_query() (PHP 8.2)

Penyelesaian paling mudah tersedia dalam PHP 8.2 dengan pengenalan fungsi execute_query(). Kaedah ini membenarkan menghantar kedua-dua pernyataan SQL dan tatasusunan nilai untuk diikat sekali gus.

$array = ['Nashville', 'Knoxville'];
$parameters = str_repeat('?,', count($array) - 1) . '?';
$sql = "SELECT name FROM table WHERE city IN ($parameters)";
$result = $mysqli->execute_query($sql, $array);
Salin selepas log masuk

2. Tatasusunan ke dalam execute() (PHP 8.1)

Dalam PHP 8.1, anda boleh menghantar tatasusunan terus kepada kaedah execute() tanpa memerlukan ruang letak atau mengikat.

$stmt = $mysqli->prepare($sql);
$stmt->execute($array);
Salin selepas log masuk

3. Sediakan/Ikat/Laksanakan untuk Versi Lama

Untuk versi sebelum PHP 8.1, langkah berikut diperlukan:

  • Buat rentetan ruang letak (cth., "?, ?" untuk tatasusunan dua nilai).
  • Tambah rentetan ini pada pertanyaan.
  • Sediakan pernyataan.
  • Buat rentetan jenis (cth., "ss" untuk dua nilai rentetan).
  • Ikat nilai tatasusunan menggunakan pembongkaran argumen operator.
$types = str_repeat('s', count($array));
$stmt->bind_param($types, ...$array);
Salin selepas log masuk

Contoh:

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

Dengan mengikuti pendekatan ini, anda boleh mengikat tatasusunan rentetan dengan berkesan ke WHERE IN (? ) klausa dalam pernyataan MySQLi yang disediakan.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Susunan Rentetan ke MySQLi WHERE IN (?) Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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