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);
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);
3. Sediakan/Ikat/Laksanakan untuk Versi Lama
Untuk versi sebelum PHP 8.1, langkah berikut diperlukan:
$types = str_repeat('s', count($array)); $stmt->bind_param($types, ...$array);
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();
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!