ホームページ > バックエンド開発 > PHPチュートリアル > MySQLi の「bind_result」と「get_result」: どちらのプリペアド ステートメント メソッドを選択する必要がありますか?

MySQLi の「bind_result」と「get_result」: どちらのプリペアド ステートメント メソッドを選択する必要がありますか?

Mary-Kate Olsen
リリース: 2024-12-04 16:30:17
オリジナル
828 人が閲覧しました

`bind_result` vs. `get_result` in MySQLi: Which Prepared Statement Method Should You Choose?

MySQL プリペアド ステートメントのbind_result と get_result

MySQLi のプリペアド ステートメントには、クエリ結果を取得するための 2 つの主要な方法、bind_result と get_result が用意されています。この記事では、各メソッドの目的、利点、制限事項を比較します。

bind_result

bind_result メソッドは、クエリによって返された列に変数を明示的にバインドします。変数の順序が列構造と厳密に一致する必要があり、通常、クエリが列の特定のサブセットを返す場合に使用されます。

長所:

  • 互換性古い PHP バージョンの場合
  • それぞれに個別の変数を返します列

短所:

  • 各変数を手動でバインドする
  • 行を配列として返すには追加のコードが必要
  • テーブル構造が異なる場合はコードの更新が必要です変更

get_result

get_result メソッドは、クエリの結果セット全体を含むオブジェクトを返します。 MySQL ネイティブ ドライバー (mysqlnd) が必要で、柔軟性が高くなります。

長所:

  • 返された行のデータを含む連想/列挙配列またはオブジェクトを返します。
  • を使用して、返されたすべての行を一度にフェッチできます。 fetch_all()

短所:

  • MySQL ネイティブ ドライバーが必要

例:bind_result

<?php
$query1 = 'SELECT id, first_name, last_name, username FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query1);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {
    echo 'ID: ' . $id . '<br>';
    echo 'First Name: ' . $first_name . '<br>';
    echo 'Last Name: ' . $last_name . '<br>';
    echo 'Username: ' . $username . '<br><br>';
}
?>
ログイン後にコピー

例: get_result

<?php
$query2 = 'SELECT * FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query2);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo 'ID: ' . $row['id'] . '<br>';
    echo 'First Name: ' . $row['first_name'] . '<br>';
    echo 'Last Name: ' . $row['last_name'] . '<br>';
    echo 'Username: ' . $row['username'] . '<br><br>';
}
?>
ログイン後にコピー

結論

bind_result と get_result のどちらを選択するかは、アプリケーションの特定の要件によって異なります。 bind_result は古い PHP バージョンとの互換性を提供し、正確な変数バインディングを可能にします。一方、get_result は柔軟性を提供し、手動での変数バインディングの必要性を排除します。ただし、get_result には MySQL Native Driver が必要です。

以上がMySQLi の「bind_result」と「get_result」: どちらのプリペアド ステートメント メソッドを選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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