Я пытаюсь обновить только проверенные строки в таблице, но ничего не происходит
Вот мой код
<?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>
$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);
}
Вы также получили опечатку здесь: is_array($POST['name'])
должно быть is_array($_POST['name'])
,
Ты можешь использовать MySQL
В функция для обновления всех наборов данных в одном запросе. Таким образом, вам не нужно перебирать все идентификаторы, используя foreach
петля.
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=
,
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);
}
}