我试图仅更新表中已检查的行,但没有发生任何事情 这是我的代码
<?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>
答案 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);
}
}