MySQLi と複数の LIKE クエリ結果: 総合ガイド
MySQLi の LIKE
演算子を使用すると、複数の一致する行を取得するときに問題が発生することがよくあります。このガイドでは、そのような問題を回避するための正しいテクニックを説明します。
複数行取得用に最適化されたコード:
次のコード スニペットは、users
テーブルから一致するすべてのレコードを効率的に取得し、$data
配列に格納します。
<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>
ここで重要なのは、get_result()
を活用することです。このメソッドは MySQLi 結果オブジェクトを返し、結果セット全体へのシームレスなアクセスと処理を可能にします。
最新のアプローチ (PHP 8.2 以降):
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>
これは execute_query()
メソッドを活用し、プロセスを大幅に簡素化します。
従来のフェッチおよびbind_resultメソッド:
効率は劣りますが、fetch()
と bind_result()
を使用する従来のアプローチも引き続きオプションです。
<code class="language-php">$stmt->bind_result($id, $username); while ($stmt->fetch()) { echo "Id: {$id}, Username: {$username}"; }</code>
これには、各行を個別に繰り返すための while
ループが必要であることに注意してください。
重要なリソース:
詳細な情報と詳細については、次のリソースを参照してください。
以上がMySQLi を使用して複数の LIKE クエリ結果を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。