我正在尝试使用单选按钮更新一些记录我只希望更新所选记录,但它会一直从头到尾更新记录。任何人都可以告诉我缺少什么
<?php
$query = mysql_connect("localhost","root","toor");
mysql_select_db("busticket",$query);
$result=mysql_query("Select * from ticket_reservation") or die(mysql_error());
while($row=mysql_fetch_array($result))
{
echo "<tr><td><input type='radio' name='name[]' value='".$row['id']."'</td><td> '".$row['id']."'</td><td>".$row['userid']."</td> <td>".$row['busid']."</td><td>".$row['numberofseats']."</td></tr>";
}
echo "<tr><td><input type='submit' name='submit[]' value='validate'> </td></tr>";
?>
<?php
$name=$_POST['name'];
$qry="UPDATE ticket_reservation set validate_status='Yes'";
mysql_query($qry);
?>
答案 0 :(得分:0)
上面的代码存在一些问题,主要问题是没有为where
语句指定update
子句 - 因此所有记录在提交表单时都会更新。 radio
按钮未正确关闭,因此会导致html流程出现问题。 update
子句需要一个POSTed变量name
但是没有什么可以阻止服务器尝试在普通的GET请求中执行该语句 - 因此包含在IF
语句中。
/* Create db connection */
$query = mysql_connect( "localhost", "root", "toor" );
mysql_select_db( "busticket", $query );
/* Update records */
if( $_SERVER['REQUEST_METHOD']=='POST' ){
$name=$_POST['name'];
/* Because the field `name` is called `name[]` - array - you need to specify the item in the array, should be the first one ie: index 0 */
$qry="UPDATE `ticket_reservation` set `validate_status`='Yes' where `id`='".$name[0]."';";
mysql_query( $qry );
}
/* Display records */
$result=mysql_query("Select * from `ticket_reservation`") or die( 'Error: There was a problem with the query' );
echo "<table>";
while( $row=mysql_fetch_array( $result ) ) {
echo "
<tr>
<td><input type='radio' name='name[]' value='".$row['id']."'></td>
<td>".$row['id']."</td>
<td>".$row['userid']."</td>
<td>".$row['busid']."</td>
<td>".$row['numberofseats']."</td>
</tr>";
}
echo "<tr><td><input type='submit' name='submit' value='validate'></td></tr>";
echo "</table>";