我有一个脚本可以将新用户注册到数据库中,并且工作正常 - 用户确实被放入了数据库。但是,变量 $success 不会更改为 1(即使它应该更改为 1,因为查询成功)。每次我调用这个函数时,它都会返回 $success 的值为 0。我唯一能想到的是查询是否仍然运行良好,但返回 FALSE。但是,当它用正确的信息更新表时,这真的没有多大意义吗?
public function register($email, $password, $firstname, $lastname, $employee_number) {
//Lets us know if we registered properly or not
$success = 0;
//Salt and encrypt the password
$salt = generateSalt($password);
$encypted_password = generatePassword($salt, $password);
if(isset($this->db)) {
if($this->db->query("INSERT INTO users (email, encrypted_password, salt, first_name, last_name, employee_number) VALUES('$email', '$encypted_password', '$salt', '$firstname', '$lastname', '$employee_number');")) {
$success = 1;
}
}
$arr = array("success" => $success);
return json_encode($arr);
}
编辑:我知道我忘了提一些东西,这是使用 SQLite3。根据文档(http://www.php.net/manual/en/sqlite3.query.php),如果查询返回结果,它将返回一个 SQLite3Object 。但是,如果它不返回结果,它应该只在查询成功时返回 TRUE,如果查询失败则返回 FALSE。仔细检查语句的 var_dump,我得到了 NULL。最后我知道,INSERT 语句不应该返回任何东西,所以这有点奇怪。