0

所以我正在使用 UserCake 开发一个项目。我已将字段添加到“用户”表中。到目前为止,一切都很好。我遇到的问题是,当您注册时,它返回成功,但 SQL 语句没有将任何表单数据放入数据库。

到目前为止,我已经成功添加了必要的字段,并且能够从这些字段中提取数据,但是,我无法将数据推送到数据库。我感觉它与 bind_param 语句有关,但我不确定。这是我正在处理的:

编辑 9/30 下午 5 点 >>> 此时唯一的问题是数据没有被放入表中。

$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_usersidint(11) NOT NULL, passwordvarchar(225) NOT NULL,

emailvarchar(150) 非空,

activation_tokenvarchar(225) 非空,

last_activation_requestint(11) 非空,

lost_password_requesttinyint(1) 非空,

activetinyint(1) 非空,

titlevarchar(150) 非空,

sign_up_stampint(11) 非空,

last_sign_in_stampint(11) 非空,

companyvarchar(50) 默认为空,

address_1varchar(50) 非空,

address_2varchar(50) 非空,

cityvarchar(50) 非空,

statevarchar(20) 非空,

zipint(5) 非空,

paidtinyint(1) 非空,

first_namevarchar(50) 非空,

last_namevarchar(50) 非空

) 引擎=InnoDB 默认字符集=utf8 AUTO_INCREMENT=3 ;

4

1 回答 1

0

您表上的字段Company不允许NULL值,但您正在发送它,null正如我在您的问题( print_r($this) 部分)中看到的那样。

所以你有两种方法来解决这个问题,

  1. 如果您确实需要公司,请根据需要设置公司字段并在验证期间(发送查询后)检查它,这将使您远离此类问题。
  2. 否则更改company数据库中的字段,并允许为 NULL。
于 2014-09-30T20:23:47.140 回答