MySQLi LIKE クエリから複数のレコードを取得する
MySQLi の LIKE
クエリは複数の結果を生成することがあります。 ただし、標準の fetch()
メソッドは最初の行のみを取得します。 このガイドでは、一致するすべてのレコードを取得するいくつかの方法について概説します。
方法 1: get_result()
および fetch_all()
これが推奨される方法です。 get_result()
は結果セット全体をフェッチし、fetch_all()
はそれを連想配列に効率的に変換します。
<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>
方法 2: fetch()
とループを使用した準備済みステートメント
このアプローチでは、bind_result()
で準備されたステートメントを利用し、使用可能な行がなくなるまで fetch()
を使用して反復します。
<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()) { // Process each row ($id, $username) }</code>
方法 3: execute_query()
(PHP 8.2 以降)
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>
役立つリソース:
以上がMySQLi LIKE クエリからすべての結果を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。