我正在为一个基于浏览器的游戏开发一个小型自定义CMS我主要是作为一个学习项目编写的,并且在向我的数据库写入信息时遇到了麻烦。我一般都知道这是如何工作的,并让它在项目的其他地方发挥作用,但具体来说,它给了我一些麻烦。我知道POST和$ data数组一般都正常工作,因为我可以很好地回复它们的信息。但是当我尝试使用PDO写入数据库时,似乎没有任何东西可以通过。
这就是我所拥有的。我也知道我的常量是正确的,因为我在数据库中有一些信息,并且根据我的resetDatabase函数正确删除了它。
要明确的是,processUser函数无法获取数据库所需的信息:
function resetDatabase() {
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = 'DROP TABLE IF EXISTS user;
CREATE TABLE IF NOT EXISTS user (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(90) UNIQUE,
username VARCHAR(20),
firstname VARCHAR(40),
lastname VARCHAR(40),
birthday DATE,
password CHAR(128),
registerdate TIMESTAMP
)';
$st = $conn->prepare($sql);
$st->execute();
$conn = null;
}
resetDatabase();
$data = array(
'firstName' => htmlspecialchars($_POST['firstName']),
'lastName' => htmlspecialchars($_POST['lastName']),
'username' => htmlspecialchars($_POST['username']),
'email' => $_POST['email'],
'birthday' => strtotime($_POST['birthday']),
'registerDate' => strtotime('now'),
'password' => hash('sha512', $_POST['password'])
);
function processUser($data = array()) {
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = 'INSERT INTO user (email, username, firstname, lastname, birthday,
registerdate, password) VALUES (:email, :username, :firstName,
:lastName, :birthday, :registerDate, :password)';
$st = $conn->prepare($sql);
$st->bindValue(':email', $data['email'], PDO::PARAM_STR);
$st->bindValue(':username', $data['username'], PDO::PARAM_STR);
$st->bindValue(':firstName', $data['firstName'], PDO::PARAM_STR);
$st->bindValue(':lastName', $data['lastName'], PDO::PARAM_STR);
$st->bindValue(':birthday', $data['birthday'], PDO::PARAM_INT);
$st->bindValue(':registerDate', $data['registerDate'], PDO::PARAM_INT);
$st->bindValue(':password', $data['password'], PDO::PARAM_STR);
$st->execute();
$conn = null;
}
processUser($data);
任何人都知道我的代码在哪里绊倒?谢谢你的帮助。