3

get_result も正常に動作するように見えるため、php 開発者が関数 bind_result を作成するポイントは何ですか。

if($stmt=$mysqli->prepare("SELECT member_ID FROM members where hair=? and hand=?")){
    if($stmt->bind_param('ss',$hair,$hand)){
        if($stmt->execute){
            $result=$stmt->get_result();
            while($line=$result->fetch_assoc()){
                echo $line['member_ID'];
            }
            // ------------ versus -------------------
            // $stmt->store_result();
            // $stmt->bind_result($member_ID);
            // while($stmt->fetch()){
            //  echo $member_ID;
            // }
        }
    }
}

$stmt->fetch()この関数が先に出て以来、php 開発者自身が好んで使用しているようですが (私は推測しています)、なぜ$stmt->fetch()でしょうか? $row['member_ID']との間の変数名の違いの理由ではないようです$member_ID

4

2 に答える 2

2

一部のプログラマーは、連想配列の各要素を通常の変数に割り当てることを好みます。を使用bind_resultすると、これが自動的に行われるため、フェッチ ループのたびに繰り返す必要はありません。

それは基本的に単なるスタイルの選択です。私見、主な問題は、引数の順序をリストbind_resultと同期させておく必要があることです。これは(これが、PDO がこれを解決するためにパラメーターを許可する理由selectです) にも当てはまりますが、利点はそれを上回ります。bind_param:name

于 2013-08-17T00:42:52.880 に答える
0

データベースから文字列を返すことにセキュリティ リスクはありません (返す内容に応じて正しい検証が行われます)。

get_result()ステートメントから事前に作成された配列を簡単に返すことができます。

bind_result()操作したい値を簡単に操作できます。

本質的に、それはすべて、開発者が何を使用することを好むかにかかっています。変数または配列のシーク。どちらも同じタスクを実行します。bind_result を使用するだけで、配列型をフェッチするためのコード行が不要になります。

于 2013-08-17T00:42:21.467 に答える