MySQLi の LIKE ステートメントを使用して複数の検索結果を効率的に取得します
この記事では、MySQLi を使用して LIKE クエリから複数の結果を取得する方法について説明します。
質問で提供されている元のコードは、単一行の結果を取得しようとしていますが、これは複数行が返される可能性があるシナリオには適していません。すべての結果を正しく取得するには、次を使用できます:
<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);</code>
PHP 8.2 以降では、次のより簡潔なコードを使用することもできます:
<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>
従来の fetch
および bind_result
構文を使用したい場合は、次のコードを使用できます。
<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(); $stmt->bind_result($id, $username); while ($stmt->fetch()) { echo "Id: {$id}, Username: {$username}"; }</code>
これらの更新されたコード スニペットにより、一致するすべての行がデータベースから確実に取得され、必要に応じてデータにアクセスできるようになります。
以上がMySQLi で LIKE を使用して複数の検索結果を適切にフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。