第一个PDO语法有效,第二个类似的没有

时间:2013-02-08 13:24:41

标签: php syntax pdo

在人们使用用户名,密码和电子邮件填写注册表单后,我正在尝试创建两个数据库。

下面的第一个MySQL查询有效。它将其信息插入用户表中。

第二个查询不是。它试图在确认表中插入一个加密密钥,我可以用确认电子邮件确认他们的帐户。

这是PDO异常消息:

  带有消息'SQLSTATE [42000]的

异常'PDOException':语法错误   或访问冲突:1064您的SQL语法有错误;校验   与您的MySQL服务器版本对应的手册   在'key,email'附近使用的语法VALUES('24',   'd96e77df9072c73da2612380a784f51b','r'在第1行'   C:\ xampp \ htdocs \ tutorspot \ sign-up-tutors \ index.php:80堆栈跟踪:#0   C:\ XAMPP \ htdocs中\ tutorspot \登录向上导师\的index.php(80):   PDOStatement-> execute()#1 {main}

if($action['result'] != 'error'){

$password = md5($password . 'salty');

    try
    {
        $sql = 'INSERT INTO user (fullname, username, email, password, active) VALUES (
            :fullname,
            :username,
            :email,
            :password,
            0)';
        $s = $pdo->prepare($sql);
        $s->bindValue(':fullname', $_POST['fullname']);
        $s->bindValue(':username', $_POST['username']);
        $s->bindValue(':email', $_POST['email']);
        $s->bindValue(':password', $password);
        $s->execute();
        //get the new user id
        $userid = $pdo->lastInsertId();
    }
    catch (PDOException $e)
    {
        $error = 'Error inserting signup info.';
        include $_SERVER['DOCUMENT_ROOT'] . '/tutorspot/inc/error.html.php';
        exit();
    }

    //create a random key for confirmation
    $key = $username . $email . date('mY');
    $key = md5($key . 'salty');

    //add info to confirm table

    try
    {   
        $sql = 'INSERT INTO confirm (userid, key, email) VALUES (
            :userid,
            :key,
            :email)';
        $s = $pdo->prepare($sql);
        $s->bindValue(':userid', $userid);
        $s->bindValue(':key', $key);
        $s->bindValue(':email', $_POST['email']);
        $s->execute();
    }
    catch (PDOException $e)
    {
        $error = 'Error inserting confirm info.';
        include $_SERVER['DOCUMENT_ROOT'] . '/tutorspot/inc/error.html.php';
        echo $e;
        exit();
    }
}

1 个答案:

答案 0 :(得分:1)

keyuserSQL语法中的保留字。用反引号包装列和表名。例如:

(`userid`, `key`, `email`)