Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengikat Susunan Rentetan ke MySQLi WHERE IN Klausa?
Anda boleh menghadapi cabaran apabila cuba mengikat tatasusunan nilai ke klausa WHERE IN menggunakan MySQLi. Satu ralat biasa ialah menggunakan bind_param dengan salah. Begini cara untuk menyelesaikan isu ini:
PHP 8.2 memperkenalkan fungsi execute_query(), yang menjadikannya mudah untuk melaksanakan pernyataan yang disediakan dengan berbilang nilai.
Contoh:
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array); $data = $result->fetch_all(MYSQLI_ASSOC);
Untuk PHP 8.1, anda boleh menghantar tatasusunan terus ke execute():
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $sql = "SELECT name FROM table WHERE city IN (".str_repeat('?,', count($array) - 1) . '?)'; $stmt = $mysqli->prepare($sql); $stmt->execute($array); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
Untuk versi lama, gunakan pendekatan berikut:
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $types = str_repeat('s', count($array)); $stmt = $mysqli->prepare($sql); $stmt->bind_param($types, ...$array); $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
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!