我有以下PHP验证:
假设POST变量在表单中按预期设置。
// Check if email input field is empty
if (empty($_POST["email"])) {
$emailErr = "Email address required";
}
else {
// If it is not empty, quote to prevent SQL injection and assign it to a variable
$email = $_POST['email'];
$safe_email = $db->quote($_POST['email']);
}
// same for password, but instead of quote I hash the password below
if (empty($_POST["password"])) {
$passwordErr = "Password required";
}
else {
$password = $_POST["password"];
}
如果没有错误: //哈希密码 $ hashed_password = md5($ password);
// create an insert query, insert safe email and hashed password into database
$query = "INSERT INTO user VALUES ('', 0, '$safe_email', '$hashed_password')";
// perform the above query
$result = $db->query($query);
我遇到的问题是,当我在查询中使用$safe_email
而非$email
时,它会给我这个错误:
致命错误:未捕获的异常' PDOException'与消息 ' SQLSTATE [42000]:语法错误或访问冲突:1064您有 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本为正确的语法使用附近 ' leomessi@adidas.com'',' ce0a8ad8a758c3d242d9e050c4707fb6')'在线 1'在C:\ wamp \ www \ Coursework \ register.php第65行
我不太确定这里的问题是什么,因为我的语法似乎很好。
这是我的数据库结构:
答案 0 :(得分:0)
您已使用$db->quote()
添加了引号,因此您需要将其从$query
中删除。
访问http://pl1.php.net/manual/en/pdo.quote.php#112169并查看示例中的代码。