私はmysqliが用意したステートメントのラッパーをテストしていました。私のテーブルゲストでは、first_nameはvarchar [32](基本的に文字列)で、idは整数です。私の関数は、以下の例の$ first_nameや$ idのようなパラメータのgetTypeを使って、bind_paramメソッドの$ typesパラメータを構築します。私は、$ idがフォーム入力から取り出され、実際に文字列であるときに起こるような問題に取り組む準備ができました。何かが問題ではないことを気づいたときに何か文字列を入力するとどうなりますか0_
$SQL = 'update guests set first_name = ? where id = ?';
$mysqli->execute($SQL, $first_name, $id);
以下のすべてのケースで成功した挿入が行われました:
$ id = "1"; $ first_name = "Frank";$ types paramは 'ss'でした。
$ id = 1; $ first_name = 3; $ types paramは 'ii'でした。
だから、どうしたのですか?
編集:
call_user_func_array(array($statement, 'bind_param'), $bind_params);
あなたは、私がbind_paramを呼んでいる方法が要因であると思いますか?いずれにせよ、私は理由を知りたいです。