【问题标题】:Update a record using radio button使用单选按钮更新记录
【发布时间】:2015-09-09 15:26:32
【问题描述】:

我正在尝试使用单选按钮更新一些记录我只希望更新选定的记录,但它会从头到尾不断更新记录。谁能告诉我我错过了什么

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

   ?>

【问题讨论】:

  • UPDATE ... WHERE id = :id?
  • 您需要在更新语句中添加 where 子句,否则,正如您所注意到的,所有记录都将被更新。此外,单选输入字段未正确关闭

标签: php mysql radio-button selection


【解决方案1】:

上面的代码有几个问题,主要的一个是没有为您的update 语句指定where 子句 - 因此所有记录都会在提交表单时更新。 radio 按钮未正确关闭,因此会导致 html 流出现问题。 update 子句需要一个 POST 变量 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>";

【讨论】:

  • 我已经替换了代码,但现在它显示没有任何变化......数据库也没有改变我想问你为什么在更新查询中添加了两个分号?
  • 在更新区域执行之前尝试回显 sql。有两个分号,因为一个在 sql 中用于终止语句,另一个用于终止 php 行结束。
  • echo $qry 执行时会显示以下内容。更新ticket_reservation 设置validate_status='Yes' where id='Array';
  • 那是因为您使用name[] 作为字段。检查上面的更新答案
  • 我已经检查了 mysql_select_db($dbname);它说访问被拒绝用户''@localhost 使用密码否。我认为 tnis 可能是一个问题....是这样吗?
猜你喜欢
  • 2014-04-15
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2018-06-12
相关资源
最近更新 更多