ホームページ >データベース >mysql チュートリアル >「bind_result」と「get_result」: クエリ結果の取得にはどちらの MySQLi メソッドを使用する必要がありますか?

「bind_result」と「get_result」: クエリ結果の取得にはどちらの MySQLi メソッドを使用する必要がありますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-13 03:28:10614ブラウズ

`bind_result` vs. `get_result`: Which MySQLi Method Should I Use for Retrieving Query Results?

bind_result と get_result の選択

データベース クエリのプリペアド ステートメントを使用する場合、結果を処理する適切なメソッドを選択すると、結果に大きな影響を与える可能性があります。コードの効率性と柔軟性。この記事では、結果データの取得に一般的に使用される 2 つのメソッド、bind_result と get_result の違いについて説明します。

bind_result

bind_result は、変数の割り当てを正確に制御する必要がある場合に最適です。各列にバインドされる変数を明示的に指定することで、変数の順序が返された行の構造と厳密に一致することが保証されます。このアプローチは、返される行の構造が事前にわかっており、それに応じてコードを調整できる場合に有利です。

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

$stmt = $mysqli->prepare($query1);
/*
    Binds variables to prepared statement

    i    corresponding variable has type integer
    d    corresponding variable has type double
    s    corresponding variable has type string
    b    corresponding variable is a blob and will be sent in packets
*/
$stmt->bind_param('i',$id);

/* execute query */
$stmt->execute();

/* Store the result (to get properties) */
$stmt->store_result();

/* Get the number of rows */
$num_of_rows = $stmt->num_rows;

/* Bind the result to variables */
$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>';
}

bind_result の長所:

  • 古い PHP バージョンと互換性があります
  • 個別に返されます変数

bind_result の短所:

  • すべての変数の手動リストが必要
  • 行をarray
  • テーブル構造が変更されるとコードを更新する必要があります変更

get_result

get_result は、データ取得のためのより汎用性の高いソリューションを提供します。返された行のデータを含む連想/列挙配列またはオブジェクトが自動的に作成されます。このメソッドは、動的な結果構造を扱う場合、またはデータへのアクセスの柔軟性が不可欠な場合に便利です。

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

$stmt = $mysqli->prepare($query2);
/*
    Binds variables to prepared statement

    i    corresponding variable has type integer
    d    corresponding variable has type double
    s    corresponding variable has type string
    b    corresponding variable is a blob and will be sent in packets
*/
$stmt->bind_param('i',$id);

/* execute query */
$stmt->execute();

/* Get the result */
$result = $stmt->get_result();

/* Get the number of rows */
$num_of_rows = $result->num_rows;

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>';
}

get_result の長所:

  • 連想/を返します。列挙型配列またはオブジェクトにデータが自動的に入力されます
  • fetch_all() メソッドがすべてを返すことを許可します一度に行を返しました

get_result の短所:

  • MySQL ネイティブ ドライバー (mysqlnd) が必要です

結論

bind_result と get_result のどちらを選択するかは、アプリケーションの特定の要件によって異なります。 bind_result は結果データの精度と制御を提供しますが、動的データ構造の場合は扱いにくい場合があります。 get_result は柔軟性と利便性を提供しますが、古い PHP バージョンではサポートされない場合があります。各メソッドの利点と制限を理解することで、開発者はクエリ結果を処理する際に情報に基づいた意思決定を行うことができます。

以上が「bind_result」と「get_result」: クエリ結果の取得にはどちらの MySQLi メソッドを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。