PHP PDO 语法错误或访问冲突 : 1064

标签 php mysql pdo

遇到一个我似乎没有看到的问题。

这是我的函数

function addIT($type, $amount, $id) {
$db = new database();
$conn8 = $db->connect();
$addit = $conn8->prepare("UPDATE accountTable SET :type = :type + :amount WHERE ID =     :id");
$addit->execute(array('type'=>$type, 'amount'=>$amount, 'id'=>$id));
}

这是我的电话:

$type = "age";
$amount = 17;
$id = 1;
addIT($type, $amount, $id);

现在执行代码时出现以下错误

Fatal error: Uncaught exception 'PDOException' with message '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 ''age' = 'age' + '17' WHERE ID = '1'' at line 1' in /Library/WebServer/Documents/me/functions/activity.php:7 Stack trace: #0 /Library/WebServer/Documents/me/functions/activity.php(7): PDOStatement->execute(Array) #1 /Library/WebServer/Documents/me/content/doadd.php(66): addIT('age', 17, '1') #2 /Library/WebServer/Documents/me/main(48): include('/Library/WebSer...') #3 /Library/WebServer/Documents/me/where.php(25): include('/Library/WebSer...') #4 {main} thrown in /Library/WebServer/Documents/me/functions/activity.php on line 7

我确定我的执行或准备语句有问题。我再也看不到了。

最佳答案

查询中不能有可变的列名或表名。使用

UPDATE accountTable 
SET age = age + :amount 
WHERE ID = :id

顺便说一句,您不应该存储一个人的年龄,而应该存储生日。然后你不必更新它。

关于PHP PDO 语法错误或访问冲突 : 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935226/

相关文章:

javascript - magento 可以更改购物车中的价格吗?

Mysql-时间维度表

java - MYSQL存储过程访问存储为BLOB的java对象

mysql - docker-compose 无法启动 mysql :8 correctly

php - 事务中的多个查询并使用 php 提交/回滚

php - Google 机器人是否有元数据可以忽略 apple-app-site-association 和 assetlinks.json?

php - 当 html 代码作为电子邮件发送时,事情无法正常工作

php - 在 Woocommerce 的管理编辑订单页面上显示客户来源国家/地区

php - 当测试外部Mysql连接时,我得到CDbConnection failed to open the DB connection

php - 数据库中的行不会更新