使用一个表单更新多行

时间:2012-01-26 07:11:30

标签: mysql

我想一次更新十二行。我搜索了不同的方式,但没有一个与我合作。当我按“提交”时,我没有看到任何动作发生。任何人都可以帮我找到下面脚本中的错误:

<?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();
?>

有更好的方法可以用一个表单更新多个记录吗?

提前致谢。

1 个答案:

答案 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] . "' ";