0

だから私はUserCakeを使ったプロジェクトに取り組んでいます。「users」テーブルにフィールドを追加しました。これまでのところ、すべてがうまく機能しています。私が抱えている問題は、登録時に成功したことを返しますが、SQL ステートメントはフォーム データをデータベースに入れませんでした。

これまでのところ、必要なフィールドの追加に成功しており、それらのフィールドからデータを取得することはできますが、データをデータベースにプッシュすることはできません。bind_param ステートメントに関係しているように感じますが、よくわかりません。これが私が扱っているものです:

EDIT 9/30 5pm >>> この時点で唯一の問題は、データがテーブルに入れられていないことです。

$stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."users (
                password,
                email,
                activation_token,
                last_activation_request,
                lost_password_request,
                active,
                title,
                sign_up_stamp,
                last_sign_in_stamp,
                company,
                address_1,
                address_2,
                city,
                state,
                zip,
                paid,
                first_name,
                last_name
                )
                VALUES (
                ?,
                ?,
                ?,
                '".time()."',
                '0',
                ?,
                'New Member',
                '".time()."',
                '0',
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                '0',
                ?,
                ?
                )");

            $stmt->bind_param("sssisssssiiss", $secure_pass, $this->clean_email, $this->activation_token, $this->user_active, $this->company, $this->address_1, $this->address_2, $this->city, $this->state, $this->zip, $this->first_name, $this->last_name);
            $stmt->execute();
            print_r($stmt);
            $inserted_id = $mysqli->insert_id;
            $stmt->close();

編集 >>> 空の配列の問題を解決

私は次のように新しいユーザーを呼び出しています: $user = new User($password, $email, $token, $activationRequest, $passwordRequest, $active, $title, $signUp, $signIn, $company, $address_1, $address_2 , $city, $state, $zip, $paid, $first_name, $last_name);

編集 >>> テーブルuc_users( idint(11) NOT NULL, passwordvarchar(225) NOT NULL,

emailvarchar(150) NOT NULL,

activation_tokenvarchar(225) NOT NULL,

last_activation_requestint(11) NOT NULL、

lost_password_requesttinyint(1) NOT NULL,

activetinyint(1) NOT NULL,

titlevarchar(150) NOT NULL,

sign_up_stampint(11) NOT NULL、

last_sign_in_stampint(11) NOT NULL、

companyvarchar(50) デフォルト NULL、

address_1varchar(50) NOT NULL,

address_2varchar(50) NOT NULL,

cityvarchar(50) NOT NULL,

statevarchar(20) NOT NULL,

zipint(5) NOT NULL、

paidtinyint(1) NOT NULL,

first_namevarchar(50) NOT NULL,

last_namevarchar(50) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

4

1 に答える 1

0

Companyあなたのテーブルのフィールドは値を許可していませんが、あなたの質問( print_r($this) section )にあるようにNULL送信しています。null

したがって、この問題を解決するには2つの方法があります。

  1. 会社が本当に必要な場合は、Company フィールドを必須として設定し、検証中に (クエリを送信した後) チェックすることで、このような問題を回避できます。
  2. companyそれ以外の場合は、データベースのフィールドを変更し、NULL を許可してください。
于 2014-09-30T20:23:47.140 に答える