gpt4 book ai didi

php - 使用带有 PDO 的数组更新多个 MySQL 表列

转载 作者:可可西里 更新时间:2023-11-01 07:10:51 26 4
gpt4 key购买 nike

我正在尝试将我所有的 MySQL 连接从旧的 mysql_query 切换到 PDO。我正在尝试使用不同的数组更新 MySQL 表的多行和多列,但收到以下错误:

[42000]:语法错误或访问冲突:1064 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,了解在“(accnt, car, radio, misc) values ('admin', '300.00', '400.00', '10.00') WHERE ID' 附近使用的正确语法1

来自以下代码:

$account = $_POST['account'];
$car_lease = $_POST['car_lease'];
$radio_lease = $_POST['radio_lease'];
$misc_lease = $_POST['misc_lease'];
$lease_ID = $_POST['lease_ID'];

//$data = array_map(null,$account,$car_lease,$radio_lease,$misc_lease);
$A = count($lease_ID);

try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$STH = $DBH->prepare('UPDATE lease (accnt, car, radio, misc) values (:account, :car_lease, :radio_lease, :misc_lease) WHERE ID = :lease_ID');
$i = 0;
while($i < $A) {
$STH->bindParam(':account', $account[$i]);
$STH->bindParam(':car_lease', $car_lease[$i]);
$STH->bindParam(':radio_lease', $radio_lease[$i]);
$STH->bindParam(':misc_lease', $misc_lease[$i]);
$STH->bindParam(':lease_ID', $lease_ID[$i]);
$STH->execute();
$i++;
}
}
catch(PDOException $e) {
echo "I'm sorry, but there was an error updating the database.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}

我相信这个问题是由我调用语句句柄的方式引起的,但我不确定我的语法的哪一部分不正确。另外,这是处理此类情况的最佳方法吗?或者是否有更好的方法来更新表中的多行?

最佳答案

您混淆了 INSERTUPDATE 语句之间的语法。您需要一个 SET 子句,而不是 VALUES() 列表:

$STH = $DBH->prepare('
UPDATE lease
SET
accnt = :account,
car = :car_lease,
radio = :radio_lease,
misc = :misc_lease
WHERE ID = :lease_ID
');

查看 MySQL UPDATE syntax reference获取与 UPDATE 语句一起使用的完整规范。

关于php - 使用带有 PDO 的数组更新多个 MySQL 表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043967/

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