gpt4 book ai didi

php - 无法确定 INSERT PDO 错误。 SQLSTATE[42000] : Syntax error or access violation

转载 作者:行者123 更新时间:2023-11-29 10:16:00 25 4
gpt4 key购买 nike

我正在尝试执行 SQL INSERT,但收到错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key) VALUES (example@example.com, hello)' at line 1

表中的值为:id(自增)、email、key,均为varchar(255),id为(int)。

function validate($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

$key = 'hello';
$email = validate($_POST['email']);

$insert = $user->recordPasswordReset($email, $key);


public function recordPasswordReset($email, $key)
{
try
{
$db = DB();
$sql = "INSERT INTO password_reset(email, key) VALUES (:email, :key)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':key', $key, PDO::PARAM_STR);
$stmt->execute();
}
catch (PDOException $e)
{
echo ($e->getMessage());
}
}

任何人都可以看到我的代码中的任何错误吗?

最佳答案

首先,根据 documentation ,您的字段名称 key 是保留关键字。您需要在其周围使用反引号。

改变,

INSERT INTO password_reset(email, key) VALUES (:email, :key)

至,

INSERT INTO password_reset(email, `key`) VALUES (:email, :key)

其次,请不要使用 all-in-one sanitize function因为它们通常都有某种形式的缺陷。

第三,您在类之外使用可见性关键字。

关于php - 无法确定 INSERT PDO 错误。 SQLSTATE[42000] : Syntax error or access violation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com