ホームページ >バックエンド開発 >PHPチュートリアル >文字列の配列を MySQLi の WHERE IN 句にバインドするにはどうすればよいですか?
次を使用して値の配列を WHERE IN 句にバインドしようとすると、問題が発生する可能性があります。 MySQLi。よくあるエラーの 1 つは、bind_param の使用方法が間違っていることです。この問題を解決する方法は次のとおりです:
PHP 8.2 では、execute_query() 関数が導入され、複数のプリペアド ステートメントを簡単に実行できるようになりました。
例:
$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);
PHP 8.1の場合、配列を直接に渡すことができます。 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);
古いバージョンの場合は、次のアプローチを使用します:
$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);
以上が文字列の配列を MySQLi の WHERE IN 句にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。