バインド結果と fetch_assoc の違いは何ですか?
準備されたステートメントのバインドはセキュリティに優れていることは知っています...結果をバインドする利点は何ですか?
結果のバインドは、従来の fetch_assoc() よりも非常に複雑に見えます
(最近、すべての MySQL ステートメントを準備するように変更し始めました。)
結果をバインドすると、特定のクエリを実行するたびに、クエリからのデータがどこに移動するかを事前に定義できるため、最終的には作業が楽になります。fetch_assoc を使用すると、データベースから何かを取得するたびに配列を掘り下げる必要があります。
私が集めたもの: mysqli get_result と bind_result のパフォーマンスまたはセキュリティの違い?
データベースから文字列を返すことにセキュリティ リスクはありません (返す内容に応じて正しい検証が行われます)。
get_result()
ステートメントから事前に作成された配列を簡単に返すことができます。
bind_result()
操作したい値を簡単に操作できます。
一部のプログラマーは、連想配列の各要素を通常の変数に割り当てることを好むため、それらをあまり冗長に使用できません。を使用bind_result
すると、これが自動的に行われるため、フェッチ ループのたびに繰り返す必要はありません。
それは基本的に単なるスタイルの選択です。主な問題bind_result
は、引数の順序を選択リストと同期させておく必要があることです。これは bind_param にも当てはまります (これが、PDO が :name パラメーターを使用してこれを解決できる理由です) が、利点はそれを上回ります。
本質的に、それはすべて、開発者が何を使用することを好むかにかかっています。変数または配列のシーク。どちらも同じタスクを実行します。bind_result を使用するだけで、配列型をフェッチするためのコード行が不要になります。