Php 使用单个按钮购买更新多个产品ID时出现问题
这段代码非常适合更新一个OrderIn\u ID或一个orderOut\u ID,它将paid列设置为Yes,然后转到显示这些结果的页面。但是,如果我订购了多个orderIn\u id或多个orderOut\u id,它将只更新第一个,而所有其他id记录保留为No。我应该使用case开关或while循环来获取订单发票中包含的所有订单id吗。我知道这需要SQL注入,这是学校第一学期的一个项目,目前我们还没有学习PDO。我没有收到任何错误,只是不会更新orderIn\u id或orderOut\u id的多个记录。这是在按下“支付此发票”时调用的php代码。它是否可以一次更新多个记录,是否可以在发票表中插入多个orderIn\u id或orderOut\u idPhp 使用单个按钮购买更新多个产品ID时出现问题,php,html,mysql,Php,Html,Mysql,这段代码非常适合更新一个OrderIn\u ID或一个orderOut\u ID,它将paid列设置为Yes,然后转到显示这些结果的页面。但是,如果我订购了多个orderIn\u id或多个orderOut\u id,它将只更新第一个,而所有其他id记录保留为No。我应该使用case开关或while循环来获取订单发票中包含的所有订单id吗。我知道这需要SQL注入,这是学校第一学期的一个项目,目前我们还没有学习PDO。我没有收到任何错误,只是不会更新orderIn\u id或orderOut\u
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_SESSION['orderIn'])) {
$orderIn_id = $_SESSION['orderIn'];
$orderIn_paid = "Yes";
$changeVal="UPDATE order_instate
SET orderIn_paid = '$orderIn_paid'
WHERE orderIn_id = '$orderIn_id'; " ;
$changeCheck=mysqli_query($dbhandle, $changeVal)
or die(mysqli_error($dbhandle));
}
if(isset($_SESSION['orderOut'])) {
$orderOut_id = $_SESSION['orderOut'];
$orderOut_paid = "Yes";
$changeVal2="UPDATE order_outstate
SET orderOut_paid = '$orderOut_paid'
WHERE orderOut_id = '$orderOut_id'; " ;
$changeCheck2=mysqli_query($dbhandle, $changeVal2)
or die(mysqli_error($dbhandle));
}
$invoice_total = 0;
$invoice_total = $gtotal;
$invoice_shipped = "No";
$shipped_date = "0000-00-00";
$add ="INSERT INTO invoice(user_id, orderIn_id, orderOut_id, invoice_total, invoice_shipped, shipped_date)
VALUES ('$user_id', '$orderIn_id', '$orderOut_id', '$invoice_total', '$invoice_shipped', '$shipped_date')";
$addCheck=mysqli_query($dbhandle, $add)
or die(mysqli_error($dbhandle));
if($addCheck != NULL) {
header("location: userOrders.php");
mysqli_free_result ($displayResult);
}
}
?>
您可能会开始做这样简单的事情,然后您可以变得更聪明,构建一个单一的插入查询,而不是多次访问数据库。看看这个答案:
您的任务是构建与顶部答案中给出的查询等价的查询,您可以在循环中这样做,然后只将其发送到db一次
但这应该是一个开始。首先,您必须向它传递一个元素数组来循环。你做过阵列吗?是的,我们已经讨论过阵列。那么我将把orderIn\u id和orderOut\u id传递到数组中,然后循环遍历数组的长度以填充发票表?
if( isset($_SESSION['orderIn']) && is_array($_SESSION['orderIn']) ) {
foreach($_SESSION['orderIn'] as $key => $order){
$orderIn_id = $_SESSION['orderIn'][$key];
$orderIn_paid = "Yes";
$changeVal="UPDATE order_instate
SET orderIn_paid = '$orderIn_paid'
WHERE orderIn_id = '$orderIn_id'; " ;
$changeCheck=mysqli_query($dbhandle, $changeVal) ;
}
}