Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengikat Array Rentetan dengan Benar kepada Pernyataan yang Disediakan MySQLi?

Bagaimana untuk Mengikat Array Rentetan dengan Benar kepada Pernyataan yang Disediakan MySQLi?

Susan Sarandon
Susan Sarandonasal
2024-12-28 10:47:10975semak imbas

How to Correctly Bind an Array of Strings to a MySQLi Prepared Statement?

Mengikat Tatasusunan Rentetan dengan Penyata Disediakan mysqi

Apabila bekerja dengan MySQL, selalunya perlu untuk mengikat tatasusunan nilai kepada klausa WHERE IN menggunakan pernyataan yang disediakan. Walaupun tugas ini kelihatan mudah, terdapat beberapa kemungkinan perangkap yang boleh membawa kepada ralat.

Dalam artikel ini, kami akan meneroka pendekatan yang betul untuk mengikat tatasusunan rentetan menggunakan pernyataan yang disediakan mysqli. Kami juga akan memberikan penjelasan terperinci tentang langkah-langkah yang terlibat dan membincangkan penyelesaian yang berpotensi.

Apa Yang Berlaku Salah?

Sampel kod yang diberikan dalam soalan secara salah cuba untuk mengikat tatasusunan bandar kepada pernyataan yang disediakan menggunakan bind_param. Walau bagaimanapun, bind_param mengharapkan nilai skalar (cth., rentetan, integer, dll.) sebagai hujahnya. Percubaan untuk mengikat tatasusunan secara langsung akan mengakibatkan ralat.

Pendekatan yang Betul

Untuk berjaya mengikat tatasusunan rentetan pada pernyataan yang disediakan, kita boleh menggunakan yang berikut langkah:

  1. Buat rentetan ruang letak: Mula-mula, buat rentetan yang terdiri daripada bilangan tanda soal (?) yang sesuai untuk mewakili ruang letak bagi elemen tatasusunan.
  2. Masukkan rentetan ruang letak ke dalam pertanyaan: Gantikan klausa WHERE IN dengan rentetan ruang letak .
  3. Sediakan dan ikat pernyataan: Sediakan pertanyaan yang diubah suai dan ikat elemen tatasusunan menggunakan penentu jenis yang betul (cth., 's' untuk rentetan).
  4. Laksanakan pertanyaan: Laksanakan pernyataan yang disediakan untuk mengambil keputusan.

Contoh Kod

Berikut ialah contoh yang betul kod:

$mysqli = new mysqli("localhost", "root", "root", "db");
if(!$mysqli || $mysqli->connect_errno) { return; }

$cities = explode(",", $_GET['cities']);
$in = str_repeat('?,', count($cities) - 1) . '?';
$query_str = "SELECT name FROM table WHERE city IN ($in)";

$query_prepared = $mysqli->stmt_init();
if($query_prepared && $query_prepared->prepare($query_str)) {
    $types = str_repeat('s', count($cities));
    $query_prepared->bind_param($types, ...$cities);
    $query_prepared->execute();
}

Dalam contoh ini, kami mula-mula mencipta rentetan ruang letak menggunakan str_repeat. Kami kemudian memasukkan rentetan ruang letak ini ke dalam pertanyaan dan menyediakan pernyataan. Perhatikan cara kami mengikat elemen individu tatasusunan bandar menggunakan ...$cities dan nyatakan jenis data menggunakan str_repeat('s', count($cities)).

Dengan mengikuti langkah ini, kita boleh berjaya ikat tatasusunan rentetan pada pernyataan yang disediakan mysqli dan laksanakan pertanyaan seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Array Rentetan dengan Benar kepada Pernyataan yang Disediakan MySQLi?. 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