更新检查行PHP的MySQL
我想只更新检查表中的行,但什么也没有发生 这里是我的代码更新检查行PHP的MySQL
<?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>
可以使用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=
。
我增加了空间,我也加入了上述行,但什么也没发生的验证状态字段在数据库 –
莫非不改变值你可以在你的代码中添加'echo $ qry;'并检查例如生成的查询'phpMyAdmin'? –
我想迭代,因为我想在一次更新多行是否有意义? –
您还得到了一个错字:is_array($POST['name'])
应该是is_array($_POST['name'])
。
$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);
}
我已经检查了这个答案但是不起作用 –
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);
}
}
它不起作用 –
你得到了什么错误? –
有没有错误先生我已经尝试过太多次检查错别字了...... –
你错过这里下划线'$ POST' –