【发布时间】:2020-10-14 01:09:12
【问题描述】:
当我在我的脚本中继续更新多行时出现错误,这个问题并不总是发生,但是当发生更新成功但在另一个没有任何引用或基数的表中更改两个或多个项目中的存在时。
这是我要更新的代码:
$ref_venta = filter_input(INPUT_POST, 'refIdFactura', FILTER_SANITIZE_STRING);
$stmt = $conn->prepare("UPDATE `PRODUCTOS` SET `refIdFactura` = :refIdFactura WHERE `id_p` = :id_p");
foreach($_POST['facturar'] as $i => $id_p) {
$stmt->bindParam(':refIdFactura', $ref_venta); // is a number of receipt
$stmt->bindParam(':id_p', $_POST['facturar'][$i]); //is the id of each item in the list
$stmt->execute();
}
就像我说的,这里工作正常,但是当问题发生时,这个 UPDATE 这个另一个表也没有在脚本中列出:
TABLE NAME: `LPRODUCTOS` ---- ROWS: idP, existences
有两个主键不同的表,如果您在 UPDATE 中看到,我从不捕获存在的行,并且 TABLE PRODUCTOS 的 id(id_p) 与 id (idP) 不同) 的表LPRODUCTOS
所以我不知道为什么会这样......
【问题讨论】:
-
检查表是否有触发器
-
@nbk 表中没有触发器
-
只有在 $_POST['facturar'] 中有两个 id 时才会出现问题,所以请回显并查看内容是什么
-
@nbk,是的,在
facturar中,每次都有两个以上的 id(1234、1235、1236、1240 等)是一个数组,这些数字是表PRODUCTOS在每个 id 中的行refIdFactura将被更改 -
所以它运行 4 次,并将 ref_venda 添加到所有 4 个 id 中,并添加您在另一个表 LPRODUCTOS 中获得的相同数量的新行。看看有一个触发器在工作。产品更新后
标签: mysql pdo insert-update