ホームページ > データベース > mysql チュートリアル > 複数の一致がある MySQLi LIKE クエリからすべての結果を効率的に取得するにはどうすればよいですか?

複数の一致がある MySQLi LIKE クエリからすべての結果を効率的に取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-20 06:08:08
オリジナル
966 人が閲覧しました

How to Efficiently Retrieve All Results from a MySQLi LIKE Query with Multiple Matches?

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 ループを使用した反復アプローチ

このアプローチでは、各行を個別に繰り返し、idusername を出力します。

<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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート