我想一次更新十二行。我搜索了不同的方式,但没有一个与我合作。当我按“提交”时,我没有看到任何动作发生。任何人都可以帮我找到下面脚本中的错误:
<?php
include 'connection.php';
$sql="SELECT * FROM tbl_maint_track1";
$result=mysql_query($sql);
// Count table rows
$count=mysql_num_rows($result);
$sno = array();
?>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="">
<tr>
<td>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tr>
<td align="center"><strong>S No</strong></td>
<td align="center"><strong>Qty</strong></td>
<td align="center"><strong>Maint Catgry</strong></td>
<td align="center"><strong>Uprice</strong></td>
<td align="center"><strong>Tprice</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center"><? $sno[]=$rows['sno']; ?><? echo $rows['sno']; ?></td>
<td align="center"><input name="qty[]" type="text" id="qty" value="<? echo $rows['qty']; ?>"></td>
<td align="center"><input name="maint_catgry[]" type="text" id="maint_catgry" value="<? echo $rows['maint_catgry']; ?>"></td>
<td align="center"><input name="uprice[]" type="text" id="uprice" value="<? echo $rows['uprice']; ?>"></td>
<td align="center"><input name="tprice[]" type="text" id="tprice" value="<? echo $rows['tprice']; ?>"></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>
<?php
$sno = $_POST['sno'];
$qty = $_POST['qty'];
$maint_catgry = $_POST['maint_catgry'];
$uprice = $_POST['uprice'];
$tprice = $_POST['tprice'];
// Check if button name "Submit" is active, do this
if(isset($_POST["$Submit"])){
for($i=0;$i<$count;$i++){
$sql1= "UPDATE tbl_maint_track1 SET qty = '{$qty[$i]}', maint_catgry = '{$maint_catgry[$i]}', uprice = '{$uprice[$i]}', tprice = '{$tprice[$i]}' WHERE sno = '{$sno[$i]}' ";
$result1=mysql_query($sql1);
}
}
if($result1){
echo "Thanks, $count records updated";
}
else
{
echo "No record updated";
}
close_conn();
?>
有更好的方法可以用一个表单更新多个记录吗?
提前致谢。
答案 0 :(得分:0)
有几件事:
1)确保使用mysql_real_escape_string转义输入。将用户值直接放入数据库可能会让您陷入SQL注入攻击。
2)您没有在循环中正确引用输入数组值。你需要使用$ qty [$ i],$ tprice [$ i]等。在变量语句周围添加{}以便能够在更新语句中引用这样的数组:
SET qty = '{$qty[$i]}', ...
编辑: 如果您在使用上述语法时遇到问题,请尝试以下操作:
$sql1= "UPDATE tbl_maint_track1 SET qty = '" . $qty[$i] . "', maint_catgry = '" . $maint_catgry[$i] . "', uprice = '" . $uprice[$i] . "', tprice = '" . $tprice[$i] . "' WHERE sno = '" . $sno[$i] . "' ";