0

私は 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 を使用しているため、機能しませんでした..

とにかく、答えてくれてありがとう。こんにちは!

4

1 に答える 1