无法从PHP脚本写入数据库

时间:2014-09-28 01:10:57

标签: php mysql

我正在为一个基于浏览器的游戏开发一个小型自定义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);

任何人都知道我的代码在哪里绊倒?谢谢你的帮助。

0 个答案:

没有答案