PHP:从另一个表获取数据时更新产品表数量
我在更新从invoiceitem表中提取的数据以更新产品表PHP:从另一个表获取数据时更新产品表数量,php,mysql,Php,Mysql,我在更新从invoiceitem表中提取的数据以更新产品表数量时遇到问题 此问题只是我循环中更新的第一条记录 请帮助我将多个项目值更新到数据库 这是我的密码: <?php $stuid = $_GET['id']; global $con; $stu_query = "SELECT * FROM invoiceorder INNER JOIN invoiceorderitem ON invoiceorder.InvoId = invoiceo
数量
时遇到问题
此问题只是我循环中更新的第一条记录
请帮助我将多个项目值更新到数据库
这是我的密码:
<?php
$stuid = $_GET['id'];
global $con;
$stu_query = "SELECT * FROM invoiceorder INNER JOIN invoiceorderitem ON invoiceorder.InvoId = invoiceorderitem.InvoId WHERE invoiceorder.InvoId ='$stuid'";
$stu_run = mysqli_query($con,$stu_query);
while($sorows = mysqli_fetch_array($stu_run)){
$Date = $sorows['Date'];
$SalesPerson = $sorows['SalesPerson'];
$Telephone = $sorows['Telephone'];
$Customer = $sorows['Customer'];
$CurrentPayment = $sorows['CurrentPayment'];
$Balance = $sorows['Balance'];
$Item_Id = $sorows['Item_Id'];
$ItemDescription = $sorows['ItemDescription'];
$UnitPrice = $sorows['UnitPrice'];
$Quantity = $sorows['Quantity'];
$SubTotal = $sorows['SubTotal'];
$Total = $sorows['Total'];
$sea_res = mysqli_query($con, "SELECT * FROM bincard WHERE BinId = $Item_Id");
while ($resresults = $sea_res->fetch_assoc()){
$BinId = $resresults['BinId'];
$ItemName = $resresults['ItemName'];
$QtyBalance = $resresults['QtyBalance'];
$QtyIssued = $resresults['QtyIssued'];
//chech this
$newqty=0;
$isuqty=0;
$newqty =$QtyBalance - $Quantity;
$isuqty = $QtyIssued + $Quantity;
$insert_query = "UPDATE bincard SET QtyBalance='$newqty',QtyIssued='$isuqty' WHERE BinId = $Item_Id";
}
if ($con->query($insert_query) === TRUE)
{
echo"<script>alert(' Updated Successfully')</script>";
echo"<script>window.open('invoiceprint.php','_self')</script>";
} else
{
echo "Error: " . $insert_query . "<br>" . $con->error;
}
$con->close();
}
?>
将if($con->query($insert\u query)===TRUE)
放入while
循环中。如果只更新一条记录,则$sea\u res->fetch\u assoc()
中只有一条记录
while ($resresults = $sea_res->fetch_assoc()){
$BinId = $resresults['BinId'];
$ItemName = $resresults['ItemName'];
$QtyBalance = $resresults['QtyBalance'];
$QtyIssued = $resresults['QtyIssued'];
//chech this
$newqty=0;
$isuqty=0;
$newqty =$QtyBalance - $Quantity;
$isuqty = $QtyIssued + $Quantity;
$insert_query = "UPDATE bincard SET QtyBalance='$newqty',QtyIssued='$isuqty' WHERE BinId = $Item_Id";
if ($con->query($insert_query) === TRUE)
{
echo"<script>alert(' Updated Successfully')</script>";
echo"<script>window.open('invoiceprint.php','_self')</script>";
} else{
echo "Error: " . $insert_query . "<br>" . $con->error;
}
}
while($resresresults=$sea\u res->fetch\u assoc()){
$BinId=$resresresults['BinId'];
$ItemName=$resresresults['ItemName'];
$QtyBalance=$resresresults['QtyBalance'];
$QtyIssued=$resresults['QtyIssued'];
//查查这个
$newqty=0;
$isuqty=0;
$newqty=$QtyBalance-$Quantity;
$isuqty=$qtysuited+$Quantity;
$insert_query=“更新bincard集合QtyBalance='$newqty',QtyIssued='$isuqty',其中BinId=$Item_Id”;
如果($con->query($insert\u query)==TRUE)
{
回显“警报(‘已成功更新’)”;
echo“window.open('invoiceprint.php','u self');
}否则{
echo“Error:”.$insert\u query.“
”$con->Error;
}
}
嘿,欢迎来到堆栈溢出。这只是一个友好的提醒,您的代码容易受到MySQL注入的攻击。您应该考虑使用此代码,因为您的代码失败,因为您的<代码>如果($CON->查询($插入tQueue)==true)位于while循环之外,则应考虑使用此代码。在while循环中移动if station块,它将插入完整的数组。此问题只是第一条记录正在更新。
实际上不正确;它实际上只是在更新最后一条记录。只是吹毛求疵而已@不。。!只有第一条记录正在更新其他数据跳过。谢谢你,嗯,你可以通过运行print\r($sea\u res)
再次检查这一点$insert\u query
在每次循环期间都会被设置,只有在循环完成后,您才能运行SQL查询命令。。因此,最后一条数据正在更新,而不是第一条数据。因为第一个在很久以前就被覆盖了。。。但这不是问题的重点。希望您设法解决了问题。如果如您所说,它只更新一条记录,其中上次保存的$item\u id
变量仅获取1个值。。。。那么问题应该出现在我的第一个while循环和没有保存多个数据的变量中。请检查我的第一个while循环。谢谢你和我在一起