php - 如何从表单字段更新多个 mysql 行

标签 php mysql

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

首先,我有一个字段名为“pol”的表单,它应该带有多个值,如下使用“[]”声明的那样

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

</form>

这个多个值,我已经能够使用 for every 循环来显示

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


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

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

这是我尝试过的

<?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 子句更新多行

最佳答案

您的查询执行位于 foreach 之外。 $sql 变量被多次覆盖,最终数组值仅在 $sql 中设置。仅在查询中执行一次,因此它应该位于 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
    }
 }

关于php - 如何从表单字段更新多个 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39284732/

相关文章:

php - 组合两个 While 和 sql 语句

关于 blob 长度的 SQL 查询

php - 多个连接与缓存的单个查询?

python - 帮助 MySQL LOAD DATA INFILE

javascript - 在 AngularJS 上使用本地存储来存储购物车

php - iconv() : Detected an incomplete multibyte character in input string

php - Cakephp3将多个Mysql表标准化为1个模型表/实体

php - Google recaptcha 不能在我的网站上工作,但在其他网站上工作

php - WordPress:从小部件代码访问数据库

mysql - Access : Search and Update Query