INSERT不起作用

时间:2014-03-09 21:37:31

标签: php sql database pdo insert

正如您在标题中看到的那样,我的INSERT存在问题。 我正在编写一个注册页面,所以这里是我的代码:

if ($AllGood) {
        $Data = $DB->prepare("INSERT into `users` (pseudo, email, password, skype, reg_date, rank, picture, reg_ip, last_ip, group) VALUES (':pseudo',              ':email', ':password', ':skype', ':date', ':rank', ':picture', ':reg_ip', ':last_ip', ':group')");

        $Data->bindParam(':pseudo', $pseudo, PDO::PARAM_STR);
        $Data->bindParam(':email', $email, PDO::PARAM_STR);
        $Data->bindParam(':password', $pswd, PDO::PARAM_STR);
        $Data->bindParam(':skype', $shit, PDO::PARAM_STR);
        $Data->bindParam(':date', $date, PDO::PARAM_STR);
        $Data->bindParam(':rank', $rank, PDO::PARAM_STR);
        $Data->bindParam(':picture', $shit, PDO::PARAM_STR);
        $Data->bindParam(':reg_ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
        $Data->bindParam(':last_ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
        $Data->bindParam(':group', $shit, PDO::PARAM_STR);
        $Data->execute();

        $Data->closeCursor(); // End the connexion
            echo "YOU DONE PHP, GO TAKE A BREAK";
}

以下代码完美地执行到最后一行。但是当我去检查我的数据库时,我没有任何东西://(我对连接没有任何问题,一切都很好)。

3 个答案:

答案 0 :(得分:2)

组是一个保留的关键字,所以你需要反推作为

`group`

INSERT into `users` 
(
pseudo, email, password, skype, reg_date, rank, picture, reg_ip, last_ip, `group`
)

点击这里

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

答案 1 :(得分:1)

我建议您在设计时避免此问题,您可以使用反引号更改列名称(user_group)或其他名称。

答案 2 :(得分:0)

任何你使用MYSQL RESERVED KEYWORD你需要用反引号来逃避它,这会让数据库明白它是一个列

`group`

来自文档

  

某些单词(如SELECT,DELETE或BIGINT)是保留的,需要特殊处理才能用作表名和列名等标识符。对于内置函数的名称也可能是这样。