php.netを調べた後もまだ混乱しています。
php.net から: mysqli_stmt::bind_result -- mysqli_stmt_bind_result — 変数を結果ストレージ用の準備済みステートメントにバインドし、結果セット内の列を変数にバインドします。
私の不確実性: 「列をバインドする」 - どの列ですか? PHP は変数 (var1、var2 など) を列に配置します。列はデータベース内の列を参照していますか? それまでの間、myqli bind_result() に関連する列を調査します。
php.net から: データを取得するために mysqli_stmt_fetch() が呼び出されると、MySQL クライアント/サーバー プロトコルは、バインドされた列のデータを指定された変数 var1, .... に配置します。
私の不確実性: 「指定された変数 var1 へのデータ」 - どのデータですか? これはユーザーが提供するデータですか? bind_result($x) が生成して返したデータは (魔法のように?)
私はまた、同様の問題を抱えているメンバーからの Stackoverflow の投稿を通じて、この関数の理解を得ようとしました - (bind_result を使用して配列にプッシュする) 6 月 17 日 20:36 jskidd3 に尋ねました - 彼のコード例は私のものと非常に似ていましたが、彼の質問は、私がここに持っている質問ほど基本的ではありませんでした。
私は mysqli の "bind_result()" 関数を深く理解しようとしていますが、表面で何が起こっているのかさえわかりません。では、この関数の目的は何ですか? また、バインド結果の後の準備ステートメントがどのようになるかを理論的に説明できますか? 可能であれば、私が PHP.net サイトから残したあいまいさを解消していただけますか? http://www.mustbebuilt.co.uk/2011/11/17/mysqli-cheatsheet/から取得した以下の例を使用できます。
以下の例では、bind_result($filmName) に渡される $filmName の値がわかりません。また、echo 出力を介して結果がどうなるかもわかりません。
この機能で何が起こっているのかを理解するのを手伝ってくれて、本当に感謝しています。ありがとうございました!!
シナリオのクエリ - 準備を使用したユーザー入力からの 1 行:
$stmt = $mysqli->prepare("SELECT filmID, filmName FROM movies WHERE filmID = ?");
$stmt->bind_param('i', $_GET['filmID']);
$stmt->execute();
//what value is being passed - and where is $filmName(and it's value) coming from?
$stmt->bind_result($filmName);
$stmt->fetch();
$stmt->close();
//resulting value or output displayed?
echo $filmName;