MySQL では、クエリで LIKE 演算子を使用すると、複数の結果が返されることがあります。一致する結果をすべて取得するには、適切な取得メソッドを使用する必要があります。
クエリからすべての結果を取得するには、get_result() メソッドを利用できます。このメソッドは、完全な結果セットを MySQLi_Result オブジェクトとして取得します。 MYSQLI_ASSOC 定数を使用した場合は、 fetch_all() メソッドを使用して、フィールド名によって関連付けられたすべての行データの配列を取得できます。
get_result() を使用したコード例:
$param = "%{$_POST['user']}%"; $stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
PHP 8.2 を使用したコード例execute_query():
$sql = "SELECT id, username FROM users WHERE username LIKE ?"; $result = $db->execute_query($sql, ["%{$_POST['user']}%"]); $data = $result->fetch_all(MYSQLI_ASSOC);
結果を反復的にフェッチしたい場合は、 fetch() メソッドを使用できます。ただし、すべての結果をループする組み込みの方法はないため、反復を自分で処理する必要があります。
bind_result() を使用した反復フェッチのコード例:
$param = "%{$_POST['user']}%"; $stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($id, $username); while ($stmt->fetch()) { echo "Id: {$id}, Username: {$username}"; }
フェッチに関する最新情報については、必ず MySQLi ドキュメントを参照してください。結果。
以上がMySQL LIKE クエリからすべての結果を効率的にフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。