ホームページ >データベース >mysql チュートリアル >`mysqli` プリペアドステートメント: `bind_result()` または `get_result()`?

`mysqli` プリペアドステートメント: `bind_result()` または `get_result()`?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-25 09:22:13194ブラウズ

`mysqli` Prepared Statements: `bind_result()` or `get_result()`?

Bind_result と Get_result: どちらを使用しますか?

はじめに

mysqli で準備されたステートメントを使用する場合、結果をフェッチするには 2 つのオプションがあります。 :bind_result() と get_result()。これらのメソッドの違いを理解することは、データベース操作を最適化するために重要です。

Bind_result()

bind_result() は、特定の変数をクエリ結果の列にバインドし、それらをクエリ結果の列に直接割り当てることができます。スカラー変数。これは、クエリから特定の列が必要な場合によく使用されます。

例:

$query = 'SELECT id, first_name, last_name FROM table WHERE id = ?';
$id = 5;

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

長所:

  • 古い PHP バージョンで動作します。
  • 個別に返されます。各列の変数。

短所:

  • バインドするすべての変数を手動でリストする必要があります。
  • 追加のコードが必要です行を配列として返します。
  • テーブル構造が変更されたときに更新する必要があります

Get_result()

get_result() は、結果全体を連想配列または列挙配列として取得し、返された行のデータが自動的に入力されます。行全体を配列として操作する必要がある場合に便利です。

例:

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

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

長所:

  • 連想/列挙配列またはオブジェクトを返します自動的に実行されます。
  • 返されたすべての行を一度に取得するための fetch_all() をサポートします。

短所:

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

制限事項と相違点

どちらのメソッドにも制限があります。

  • bind_result() には明示的な列リストが必要であり、エラーが発生しやすくなります。柔軟性がありません。
  • get_result() は古い PHP をサポートしていません

適切な方法の選択

最適な方法は、特定の要件によって異なります。

  • 個別の変数が必要な場合特定の列に対して古い PHP バージョンで作業する場合は、bind_result() を使用します。
  • 行を配列、すべての行を一度に取得する必要があり、MySQL ネイティブ ドライバーがある場合は、get_result().
を使用します。

以上が`mysqli` プリペアドステートメント: `bind_result()` または `get_result()`?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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