MySQLi を使用してデータベースから単一レコードを取得する
MySQLi を使用してデータベースから単一行を取得することは、一連のレコードを反復処理することとは異なります。これを実現するには、MySQLi が提供するフェッチ メソッドを利用し、ループの必要性を排除します。
単一行を連想配列としてフェッチ
全体が必要な場合は、行を連想配列として使用するには、次の構文を使用できます。
$row = $result->fetch_assoc();
これにより、結果の最初の行が $row 変数に設定され、これを利用して個々の列の値にアクセスできます。
単一値のフェッチ
単一の値が必要な場合は、
// PHP 8.1+ $value = $result->fetch_column(); // Older PHP versions $value = $result->fetch_row()[0] ?? false;
を使用できます。後者の構文は null 値をチェックし、次の場合は false を返します。
使用例
「users」テーブルの最初の行をフェッチするクエリの例を考えてみましょう。
$sql = "SELECT * FROM users LIMIT 1"; $row = mysqli_query($conn, $sql)->fetch_assoc();
次に、 $row['column_name'] を使用して特定の値にアクセスできます。例:
$name = $row['name']; $email = $row['email'];
クエリでの変数の使用
SQL クエリで変数を使用する場合、SQL インジェクションを防ぐためにプリペアド ステートメントを使用することが重要です。たとえば、特定の ID に基づいて行をフェッチするには:
// PHP 8.2+ $id = 123; $sql = "SELECT * FROM users WHERE id = ?"; $row = $conn->execute_query($sql, [$id])->fetch_assoc(); // Older PHP versions $id = 123; $stmt = $conn->prepare("SELECT * FROM users WHERE id = ?"); $stmt->bind_param("s", $id); $stmt->execute(); $row = $stmt->get_result()->fetch_assoc();
以上がMySQLi データベースから単一のレコードを効率的にフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。