更新仅检查行php mysql

时间:2015-09-07 11:15:45

标签: php mysql checkbox rows multipleselection

我试图仅更新表中已检查的行,但没有发生任何事情 这是我的代码

<?php
    //database connect select
    $result=mysql_query("Select * from ticket_reservation WHERE 
    validate_status='No'") or die(mysql_error());
    while($row=mysql_fetch_array($result))
    {
        echo "<tr><td><input type='checkbox' id='name'  name='name[]'value=".$row['id']."</td><td>".$row['userid']."</td> <td>".$row['busid']."</td><td>".$row['numberofseats']."</td></tr>";
        echo "<br>"; 
    }
    echo"<tr><td><input type='submit' name='submit' Value='Validate Tickets'>    </td></tr>";
    if(isset($_POST['submit']))
    {
        if(is_array($_POST['name']))
        {
            $qry = "UPDATE ticket_reservation SET validate_status='Yes' WHERE id IN (".implode(',', $_POST['name']).")";
            // echo $qry; // For checking the generated sql statement; can be removed
            mysql_query($qry);
        }
    }

?>
</table>
</form>

4 个答案:

答案 0 :(得分:1)

你在这里也有一个错字:is_array($POST['name'])应该是is_array($_POST['name'])

答案 1 :(得分:1)

$checkbox=$_POST['name'];
for($i=0;$i<count($checkbox);$i++)
{
    $id = $checkbox[$i];

    $sql1 = "UPDATE ticket_reservation set     validate_status='Yes' where id = '".$id."' ";
    mysql_query($sql1);
}

答案 2 :(得分:0)

您可以使用MySQL IN函数更新一个查询中的所有数据集。因此,您无需使用foreach循环迭代所有ID。

if(isset($_POST['submit']))
{
    if(is_array($_POST['name']))
    {
        $qry = "UPDATE ticket_reservation SET validate_status='Yes' WHERE id IN (".implode(',', $_POST['name']).")";
        echo $qry; // For checking the generated sql statement; can be removed
        mysql_query($qry);
    }
}

要防止SQL注入,您应该使用预准备语句(请参阅PDO

您还应在HTML属性之间添加空格:name='name[]' value=而不是name='name[]'value=

答案 3 :(得分:0)

if(isset($_POST['name']))
{
 $Name=$_POST['name'];
foreach($Name as $N)
{

$qry="Update ticket_reservation SET validate-status='Yes' Where id='$N'";       echo $qry; // For checking the generated sql statement; can be removed
 mysql_query($qry);



}

}