请问为什么循环语句断开,在乘法后它只更新最后一行,尝试在update语句中使用$ totalprice的foreach循环,它表示无效参数。
if(array_key_exists('item', $_POST)){
// $items = $_POST['item'];
//foreach($_POST['item'] as $item){
//echo $item['Pquantity'] . ", ";
//echo $item['Pidno'] . ", ";
// }
//Loop through $_POST items, updating the database for each item
foreach ($_POST['item'] as $item) {
$Pquantity = intval($item['Pquantity']);
$Pidno = ($item['Pidno']);
//echo $Pquantity . ", ";
//echo $Pidno . ", ";
//$totalprice = intval($item['Pquantity'])
$queryreg = mysql_query("
UPDATE repplac
SET Pquantity = {$Pquantity}
WHERE
Pidno = '{$Pidno}'
AND
Uname = '{$_SESSION['username']}'
") or die(mysql_error());
}
}
$pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}'") or die(mysql_error());
while ($row = mysql_fetch_assoc($pplresult))
{
$totalprice = $row['Price'] * $row['Pquantity'];
//echo "$totalprice";
//die();
$queryreg = mysql_query("
UPDATE repplac
SET Tprice = {$totalprice}
WHERE
Pidno = '{$Pidno}'
AND
Uname = '{$_SESSION['username']}'
") or die(mysql_error());
}
答案 0 :(得分:2)
第二个条件中的参数都没有在循环中改变:
WHERE
Pidno = '{$Pidno}'
AND
Uname = '{$_SESSION['username']}
也许您忘了更新$Pidno
?
另外,我不认为以下是安全的:
"SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}'"
您可能希望在将$_SESSION['username']
传递给查询之前对其进行清理。
答案 1 :(得分:0)
在您的foreach
内,您使用以下代码更新$Pidno
$Pidno = ($item['Pidno']);
因此,您正在更新数据库中的不同记录。但是在while
循环$Pidno
内部,整个时间都保持不变。因此,您一遍又一遍地更新相同的记录。要解决此问题,请在while
循环
while ($row = mysql_fetch_assoc($pplresult))
{
//get the correct Pidno for this row
$Pidno = ($row['Pidno']);
$totalprice = $row['Price'] * $row['Pquantity'];
// ... the rest of your while loop