【发布时间】:2022-01-08 13:48:58
【问题描述】:
我有一个使用程序 PHP 编写的应用程序。我创建了一个插入页面,我在其中获取大量地址并将它们作为数组传递并将它们插入数据库中。那里有行的 id,然后是 orderId、地址类型和地址。现在我希望能够更新一个特定的。到目前为止,我已经提出了以下建议:
// update new supplier order
function updateSupplierOrder($conn, $orderDate, $datePickup, $dateDelivery, $timePickup, $timeDelivery, $car, $carType, $goodsDescription, $paletChange, $paletNo, $supplier, $orderObservation, $paymentDate, $value, $addressPickup, $addressDelivery, $userid, $orderID) {
$sql1 = "UPDATE suppliersOrders SET supplierId = ?, date = ?, datePickup = ?, timePickup = ?, goodsDescription = ?, dateDelivery = ?, timeDelivery = ?, carType = ?, carNo = ?, paletChange = ?, paletNo = ?, value = ?, invoice = ?, observations = ?, operator = ? WHERE id = ?;";
$stmt1 = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt1, $sql1)) {
header ("location: ../suppliersOrders?error=failedupdateorder");
exit();
}
mysqli_stmt_bind_param($stmt1, "isssssssisisssii", $supplier, $orderDate, $datePickup, $timePickup, $goodsDescription, $dateDelivery, $timeDelivery, $carType, $car, $paletChange, $paletNo, $value, $paymentDate, $orderObservation, $userid, $orderID);
mysqli_stmt_execute($stmt1);
mysqli_stmt_close($stmt1);
for ($i=0; $i<count($addressPickup); $i++) {
$address = $addressPickup[$i];
$type = '1';
$sql2 = "UPDATE suppliersOrdersAddress SET address = ?, operator = ? WHERE orderId = ? AND addressType = ?;";
$stmt2 = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt2, $sql2)) {
header ("location: ../suppliersOrders?error=failedupdateaddress");
exit();
}
mysqli_stmt_bind_param($stmt2, "siii", $address, $userid, $orderID, $type);
mysqli_stmt_execute($stmt2);
mysqli_stmt_close($stmt2);
}
for ($i=0; $i<count($addressDelivery); $i++) {
$address = $addressDelivery[$i];
$type = '2';
$sql2 = "UPDATE suppliersOrdersAddress SET address = ?, operator = ? WHERE orderId = ? AND addressType = ?;";
$stmt2 = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt2, $sql2)) {
header ("location: ../suppliersOrders?error=failedupdateaddress");
exit();
}
mysqli_stmt_bind_param($stmt2, "siii", $address, $userid, $orderID, $type);
mysqli_stmt_execute($stmt2);
mysqli_stmt_close($stmt2);
}
header("location: ../suppliersOrders-edit.php?id=$orderID");
}
但这会更新订单和类型的所有地址。如何根据表中的 id 进行更新,这将确保更新正确的地址。
我们将不胜感激。
【问题讨论】:
-
地址在哪里填写?
-
与 addressPickup 一样,我有另一个页面,我在其中创建和插入数据库中的数据。希望这是有道理的。
-
不是真的,我不明白如果不再恢复数据,地址传递如何在页面之间持久化
-
我正在恢复它:
<?php include 'includes/dbh.inc.php'; $id = $_GET['id']; $sql = "SELECT * FROM suppliersOrdersAddress WHERE suppliersOrdersAddress.orderId = '$id' AND suppliersOrdersAddress.addressType = 1 ORDER BY suppliersOrdersAddress.id ASC;"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_array($result)) { echo "<textarea class='form-control mb-3' rows='3' name='addressPickup[]'>". $row['address'] ."</textarea>"; } } ?>