【发布时间】:2018-05-29 09:43:36
【问题描述】:
我想更新 foreach 循环中的数组数据。我正在尝试使用下面给出的脚本,它只更新最后一行数据。
它在这一行给出错误if ($updateInvoiceAddedItems AND $updateInvoiceSubtractedItems)。
PHP 脚本
if (isset($_POST['submit'])) {
foreach($_POST['data'] as $key => $value) {
$invoiceItemId = intval($value['invoiceItemId']);
$itemId = intval($value['ItemId']);
$QTY = intval($value['QTY']);
$addedQTY = intval($value['addedQTY']);
$subtractedQty = intval($value['subtractedQty']);
$Total = is_numeric($value['total']) ? $value['total'] : false;
try {
if($addedQTY > 0) {
$updateInvoiceAddedItems = $db - > prepare("UPDATE `invoiceItems` SET
qty = qty + : addedQTY,
addedQty = addedQty + : addingQTY where id = : Iid ");
$updateInvoiceAddedItems - > execute(array(':Iid' => $itemId, ':addedQTY' => $addedQTY, ':addingQTY' => $addedQty));
}
elseif($subtractedQty > 0) {
$updateInvoiceSubtractedItems = $db - > prepare("UPDATE `invoiceItems` SET
qty = qty - : subtractedQty,
subtractedQty = subtractedQty + : subtractingQty where id = : iiId ");
$updateInvoiceSubtractedItems - > execute(array(':iiId' => $itemId, ':subtractedQty' => $subtractedQty, ':subtractingQty' => $subtractedQty));
}
if ($updateInvoiceAddedItems AND $updateInvoiceSubtractedItems) {
echo ' <script> alert("success") </script>';
exit;
} else {
echo ' <script> alert("Error") </script>';
}
} catch (PDOException $e) {
echo 'Connection failed: '.$e - > getMessage();
}
}
}
【问题讨论】:
-
在你的情况下使用
&&而不是AND -
&&或AND在这里不应该有所作为。但是,如果不满足条件,您正在比较的变量是未定义的。为什么要准确检查这些 PDO 对象?$sub_invoiceItems是什么?你可能想要$updateInvoiceSubtractedItems。 -
@SamSwift웃 我已将 AND 更改为 && 但它仍然在这一行给出错误。
-
使用@jeroen 的建议 - 我的回答只是我过去所做的和经验,他的评论似乎更多的是钱
-
你怎么知道它只更新最后一行。我的意思是如果产生错误,它会在第一个循环中停止你的脚本。
标签: php arrays if-statement pdo