我正在运行一个准备好的语句,我收到以下错误。我不明白问题是什么。因为同样的查询在PHPMyAdmin中正常工作。
$queryConstruct = "
SELECT id FROM registrations WHERE
email = '$email'
AND
license_type = $license_type";
致命错误:准备查询时出现问题( SELECT id FROM registration WHERE email ='test1@gmail.com'AND license_type = 0 )您的SQL出错句法;检查与您的MySQL服务器版本相对应的手册,以便在444行的mysqli.lib.php第2行的**''test1@gmail.com'和license_type = 0'**附近使用正确的语法
答案 0 :(得分:2)
准备好的陈述看起来像这样
SELECT `id`
FROM `registgrations`
WHERE `email` = :email
AND `license_type` = :license_type
查看PDO手册文档以了解如何使用它。
答案 1 :(得分:2)
这不是一份准备好的陈述,正如Rottingham所说的那样。 来自PHP Documentation。
if ($stmt = $mysqli->prepare("SELECT id FROM Registrations WHERE email=? AND license_type=?")) {
$stmt->bind_param("s", $email);
$stmt->bind_param("s", $license_type);
$stmt->execute();
$stmt->bind_result($id);
$stmt->fetch();
printf("%s - %s - %s\n", $id, $email, $license_tpe)
$stmt->close();
}
不确定我是否正确编辑过。无论如何,这应该暗示你所做的并不是准备好的陈述。
请注意,不是在查询中连接实际值,而是用占位符(在这种情况下为“?”)替换它们,然后用值绑定。这样,可以防止SQL Injection操纵您的查询,从而破坏您的数据。
更重要的是,请考虑学习PDO课程以获得更简单的方法。