0
    $sql = $db->prepare("INSERT INTO users (user_username, user_password, user_email) VALUES ($username, $password, $email)");
    $sql->bindParam(':user_name', $username);
    $sql->bindParam(':user_password', $password);
    $sql->bindParam(':user_email', $email);
    $sql->execute();

我正在尝试学习 PDO 而不是使用 mysql_ 但我遇到了问题。这似乎没有插入,我不确定为什么。

我也没有收到任何错误消息,所以我不知道谷歌是什么。

此外,包含文件(包含所有数据库详细信息的 config.php)中的 $db 变量是否有问题?

4

2 回答 2

3

尝试 -

$sql = $db->prepare("INSERT INTO users (user_username, user_password, user_email) VALUES (:user_name, :user_password, :user_email)");
$sql->bindParam(':user_name', $username);
$sql->bindParam(':user_password', $password);
$sql->bindParam(':user_email', $email);
$sql->execute();

:user_name, ...在你$db->prepare()$username, ...

于 2013-01-18T03:10:24.477 回答
1

首先,当您开发时打开错误报告,这样您就可以看到任何错误消息。

$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

执行您拥有的代码应该会产生某种错误,因为您试图绑定到不存在的参数。命名参数需要以 a 开头,:或者如果您更喜欢占位符类型参数,则可以使用?。当你这样做时:

...VALUES ($username, $password, $email)"

变量将被解析为它们的实际值:

...VALUES (bob, $2y$14$youarehashingpasswordsright, bob@gmail.com)"

当然,这将是您的 SQL 中的语法错误。相反,您需要输入它们的参数名称:

......VALUES ( :username , :password , :email )"

然后,如果这不起作用,请查看产生的任何错误并确保查询实际上正在提交。

于 2013-01-18T03:28:39.530 回答