MySQLi LIKE クエリからすべての一致を取得する
PHP でMySQLi LIKE
クエリを操作する場合、特に複数の結果が予想される場合は、一致するレコードがすべて取得されるように慎重に処理する必要があります。 以下は、これを達成するための効率的な方法を示しています。
よくある間違いは、最初の結果のみを取得することです。 一致する行をすべて取得するには、次の改良された手法を使用します。
方法 1: fetch_all()
を使用する (推奨)
この方法は、特に PHP 8.2 以降の場合、簡潔で効率的です。 すべての結果を連想配列にフェッチします:
<code class="language-php">$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); // Fetches all results</code>
PHP 8.2 の場合、 execute_query
関数はこれをさらに簡素化します。
<code class="language-php">$sql = "SELECT id, username FROM users WHERE username LIKE ?"; $result = $db->execute_query($sql, ["%{$_POST['user']}%"]); $data = $result->fetch_all(MYSQLI_ASSOC);</code>
方法 2: bind_result()
および while
ループを使用した反復アプローチ
このアプローチでは、各行を個別に繰り返し、id
と username
を出力します。
<code class="language-php">$stmt->bind_result($id, $username); while ($stmt->fetch()) { echo "Id: {$id}, Username: {$username}<br>"; // Added <br> for better output }</code>
このメソッドは、すべての行を配列に格納するのではなく、各行を個別に処理する必要がある場合に便利です。
どちらの方法も MySQLi の公式ドキュメントに基づいており、LIKE
クエリからの複数の結果を処理するための堅牢なソリューションを提供します。 fetch_all()
メソッドは、すべての結果を一度に取得する際の単純さと効率の点で一般的に好まれます。
以上が複数の一致がある MySQLi LIKE クエリからすべての結果を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。