私は PHP の初心者で、mysqli、OOP、およびプリペアド ステートメントを使用しています。
私の質問はこれです:
データベース (クラス) の Insert_user(func) にユーザー (オブジェクト) を渡そうとしています。
「ロジック」、「データ」、「インデックス」の 3 つのクラスがあります。インデックスにはデータとロジックが含まれ、開始
接続とユーザー。
私の関数 (insert_user) では、配列を使用してユーザー変数を渡しています。
私のステートメントをバインドして実行します。
彼女は私のコードです:
<?php
function insert_user($user) {
$query = "INSERT INTO user VALUES (?,?,?,?,?,?,?,?,?,?)";
$binding = 'issssiisss';
$variables = array( $user->user_id, $user->f_name, $user->l_name, $user->address, $user->city, $user->zipcode, $user->mobile_number, $user->mail, $user->pass_key, $user->pass_word);
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param($binding,$variables[0],$variables[1],$variables[2],$variables[3],$variables[4],$variables[5],$variables[6],$variables[7],$variables[8],$variables[9]);
$stmt->execute();
}
?>
ブラウザからの私の var_dump は次のとおりです。
object(user)#1 (10) { ["user_id"]=> int(1) ["f_name"]=> string(5) "pelle" ["l_name"]=> string(5) "kanin" ["address"]=> string(7) "vænget" ["city"]=> string(6) "aaaaaa" ["zipcode"]=> int(123) ["mobile_number"]=> int(123) ["mail"]=> string(4) "fedt" ["pass_key"]=> string(3) "ert" ["pass_word"]=> string(4) "erto" }
string(10) "issssiisss"
array(10) { [0]=> int(1) [1]=> string(5) "pelle" [2]=> string(5) "kanin" [3]=> string(7) "vænget" [4]=> string(6) "aaaaaa" [5]=> int(123) [6]=> int(123) [7]=> string(4) "fedt" [8]=> string(3) "ert" [9]=> string(4) "erto" }
object(mysqli_stmt)#4 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(10) ["field_count"]=> int(0) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }
私は何を間違っていますか!?
ありがとうございました。
編集:問題は、データベースにデータを挿入することです。それは単に機能しません。私が実行すると、データは入れられません。
問題は $stmt->bind_param 関数にあり、配列からデータを挿入していると思います。
param_count = 10 および field_count = 0!
編集 !2!:
わかった。だから、それは実際に動作します!私が間違っていたのは、ユーザーを作成したときに、user_id に整数値を指定したことです。私のデータベースはその値に AUTO.INCREMENT を使用しているため、機能しませんでした..
とにかく、答えてくれてありがとう。こんにちは!