【发布时间】:2013-08-22 18:30:10
【问题描述】:
我有一个脚本可以将一个新用户注册到数据库中,它工作正常——用户确实被放入了数据库。但是,变量 $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 语句不应该返回任何东西,所以这有点奇怪。
【问题讨论】:
-
您使用的是什么 SQL 引擎?您是否尝试过删除末尾的分号 (;)?
-
试试
$result = $this->db->query(...); var_dump($result);看看 db 调用真正返回了什么。 -
如果您使用 CI,请在您的
if块内尝试$this->db->_error_message();以查看问题所在。