0
我通過createTableUsers()方法在php中創建一個表。插入默認值
function createTableUsers() {
$db = Database::getInstance();
$query = "CREATE TABLE IF NOT EXISTS users (
id INTEGER AUTO_INCREMENT NOT NULL,
username VARCHAR(50) NOT NULL UNIQUE KEY,
password VARCHAR(100) NOT NULL,
email VARCHAR(50) NOT NULL,
first_name VARCHAR(50) NOT NULL default 'default_text',
last_name VARCHAR(50) NOT NULL default 'default_text'
PRIMARY KEY(id)
);";
$stmt = $db->prepare($query);
$stmt->execute();
}
當我插入一個新的用戶做:
$db = Database::getInstance();
$username = "John";
$email = "[email protected]";
$password = "john";
$this->user = new User();
$this->user->setUsername($username);
$this->user->setEmail($email);
$this->user->setPassword($password);
$this->user->save();
所以我使用User類的方法:
class User {
private $id = null;
private $username = null;
private $password = null;
private $email = null;
private $first_name = null;
private $last_name = null;
//GET & SET methods...
public static function load(array $data) {
$u = new User();
$u->id = $data['id'];
$u->setUsername($data['username']);
$u->password = $data['password'];
$u->setEmail($data['email']);
$u->setFirstName($data['first_name']);
$u->setLastName($data['last_name']);
return $u;
}
public function save() {
$new = is_null($this->id);
$db = Database::getInstance();
if($new) {
$sql = "INSERT INTO `users` (`username`, `password`, `email`, `first_name`, `last_name`) "
. "VALUES (?, ?, ?, ?, ?)";
$stmt = $db->prepare($sql);
$stmt->execute(array($this->getUsername(), $this->password, $this->getEmail(), $this->getFirstName(), $this->getLastName()));
$this->id = $db->lastInsertedId();
}
else {
$sql = "UPDATE `users` SET `username` = ?, `password` = ?, `email` = ?, `first_name` = ?, `last_name` = ? WHERE `id` = ?";
$stmt = $db->prepare($sql);
$stmt->execute(array($this->getUsername(), $this->password, $this->getEmail(), $this->getFirstName(), $this->getLastName(), $this->id));
}
}
}
然而,當我插入一個新的用戶,例如在註冊部分,我不知道所有的字段,但只有其中的一部分(用戶名,密碼和電子郵件)。 我想要的是一個元組,如: John |約翰| [email protected] | default_value |默認值。
相反,插入的元組是John |約翰| [email protected] | NULL | NULL。
我試過把單引號',要麼放`。但它是一樣的,總是插入NULL。
你怎麼輸入一個默認值而不是NULL?我有語法錯誤?謝謝
在你的create語句中你指定的表列爲'NOT NULL',因此你不能插入NULL,我會避免這種設計,修改表以允許'NULL'並且以後填充正確的數據而不是放置隨機的東西在那裏。 – 2014-02-06 20:15:21
@SaUce謝謝,它的作品! – user3207923