如何从表单域

时间:2016-09-02 05:15:56

标签: php mysql

您好我正在创建一个表单,我可以更新数据库中的多行

首先,我有一个带有字段名称“pol”的表单,这应该带有下面声明的多个值,使用“[]”

 <form action="snooze.php" name="frm" method="post">
<input type="checkbox" name="pol[]" value="<?php echo $row_cert['Policy_Number']; ?>">

</form>

这个多个值,我已经能够使用a for each loop

显示
<?php 
if (isset($_POST['pol'])) 
{
    $hobby = $_POST['pol'];


   foreach ($hobby as $hobys=>$value) {
           echo "".$value."<br /><br />";
        }
}
?>

但是现在我正在尝试使用where子句中for each循环中传递的多个值来更新数据库中的多个行,但它只传递1个值而不是多个值,如上面的代码在echo时所做的那样。 / p>

这是我试过的

<?php
   if (isset($_POST['pol'])) 
{
$db = new mysqli('localhost', '---', '----', '----');
if ($db->connect_error) {
    die("Connect Error: " .$db->connect_error); //TODO: better error handling
}
 $hobby = $_POST['pol'];
 foreach ($hobby as $hobys=>$value) {
$sql = "UPDATE check_niid
           SET niid_status = 'Successful'
         WHERE Policy_Number = '$hobby[$hobys]'";
}
if (!$db->query($sql)) {
    die("Update failed. Error: " .$db->error); //TODO: better error handling
}
}
?>

请问我在这里做错了什么,我的目标是能够使用where子句更新多行

1 个答案:

答案 0 :(得分:0)

你的查询执行是在foreach的外面。 $ sql变量多次覆盖,最终数组值仅在$ sql中设置。只在查询中执行一次,所以.it应该在foreach循环中

foreach ($hobby as $hobys=>$value) {
$sql = "UPDATE check_niid
       SET niid_status = 'Successful'
     WHERE Policy_Number = '$hobby[$hobys]'";

 if (!$db->query($sql)) {
die("Update failed. Error: " .$db->error); //TODO: better error handling
    }
 }