gpt4 book ai didi

php - 更新mysql中的多条记录

转载 作者:行者123 更新时间:2023-11-29 14:10:08 24 4
gpt4 key购买 nike

我正在尝试更新表中的多条记录,所以我想知道这个脚本中是否有问题,因为我只更新了最后一条记录。这是完整的代码 http://pastie.org/5453954

 for ($i = 0; $i < count($_POST['id_servtype']); $i++){

$servtype = $_POST['id_servtype'][$i];
$project = $_POST['id_project'][$i];
$quantity = $_POST['tableQuantity'][$i];
$pus = $_POST['tablePus'][$i];
$puc = $_POST['tablePuc'][$i];
$totalitem = $_POST['tableTotal'][$i];

$sql = "update sales_order_items
set
id_project=?,
id_service_type=?,
quantity=?,
unit_price_no_tax=?,
unit_price=?,
total_item_imp=?
where
id_so=?
and
id_soitems=?
";

$stmt = $this->dbh->prepare($sql);
$stmt->bindValue(1, $project, PDO::PARAM_INT);
$stmt->bindValue(2, $servtype, PDO::PARAM_INT);
$stmt->bindValue(3, $quantity, PDO::PARAM_STR);
$stmt->bindValue(4, $pus, PDO::PARAM_STR);
$stmt->bindValue(5, $puc, PDO::PARAM_STR);
$stmt->bindValue(6, $totalitem, PDO::PARAM_STR);
$stmt->bindValue(7, $_POST["id"], PDO::PARAM_STR);
$stmt->bindValue(8, $_POST["iditem"], PDO::PARAM_STR);
$stmt->execute();

}

echo("Correct edition");

最佳答案

您的逻辑有问题:WHERE 子句中使用的值始终相同,因此您总是更新所有 记录,每次都使用新的
从逻辑上讲,当您的脚本完成后,只有最后的更新可见,所有先前的更新都已被覆盖。一个简单的例子:

$newVals = array(1,2,3);
while($val = array_shift($newVals))
{
$query = 'UPDATE myDB.tbl SET someField = :val WHERE id = 1';
$stmt = $pdo->prepare($query);
$stmt->execute(array('val' => $val));
}

与写作相同:

UPDATE myDB.tbl SET someField = 1 WHERE id = 1;
UPDATE myDB.tbl SET someField = 2 WHERE id = 1;
UPDATE myDB.tbl SET someField = 3 WHERE id = 1;

因此 id 为 1 的记录总共更新了 3 次,每次都撤消上次更新

关于php - 更新mysql中的多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631800/

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