gpt4 book ai didi

mysql - 带有 bindParam() 的 PDO 返回语法错误

转载 作者:行者123 更新时间:2023-11-29 05:01:58 24 4
gpt4 key购买 nike

我正在对 MariaDB 数据库执行 PDO UPDATE 查询。

$query = "UPDATE :table 
SET `name`=:name,
`title`=:title,
`description`=:description
WHERE id=:id";

$stmt = $this->conn->prepare($query);

$stmt->bindParam(':table',$this->table, PDO::PARAM_STR);
$stmt->bindParam(':id',$this->id, PDO::PARAM_INT);
$stmt->bindParam(':name',$this->name, PDO::PARAM_STR);
$stmt->bindParam(':title',$this->title, PDO::PARAM_STR);
$stmt->bindParam(':description',$this->description, PDO::PARAM_STR);

$stmt->execute();

在我看来,一切看起来都很好,但我确实遇到了一个错误:

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''category' SET `name`='Snowboards', ' at line 1 in C:\xampp\htdocs\supershop\public\api\models\Category.php on line 109

如果我在 phpMyAdmin 中执行简单的 SQL 查询,一切都很好:

UPDATE
`category`
SET
`name` = 'Snowboards',
`title` = 'Title',
`description` = 'Description'
WHERE
`id` = 9

我在这些绑定(bind)上做错了什么?

最佳答案

can't paramatise table names与 PDO。

您需要清理表名并插入到 SQL 字符串中。

"UPDATE ".$this->table."
SET `name`=:name,
`title`=:title,
`description`=:description
WHERE id=:id";

您可以看到它在 'category' 周围的引号

关于mysql - 带有 bindParam() 的 PDO 返回语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56883082/

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