如何使用整个html表更新数据库(PHP,MySQL)

我已经好几天了.我已经搜索了如何更新表,并设法获得更新行,但只有表中的最后一行.所以现在我想要一个循环遍历所有输入并用输入的值更新数据库.我认为需要纠正的代码位于代码末尾附近我想做的事:在html表中获取/显...

我已经好几天了.我已经搜索了如何更新表,并设法获得更新行,但只有表中的最后一行.所以现在我想要一个循环遍历所有输入并用输入的值更新数据库.我认为需要纠正的代码位于代码末尾附近

我想做的事:

>在html表中获取/显示数据库
>更改某些列的值
>使用提交按钮更新数据库表,该按钮更新数据库中的每一行

下面是Web视图中表格的图片:

<?php
//Connect to database
include '../db/connect.php';
?>
   <form action='test7.php' method="post">
      <table border='1'>
         <?php
            $result = $MySQLi_CON->query("SELECT * FROM users");
               echo "<tr>";
               echo "<td colspan='3'>CLASS 1</td>";
               echo "</tr>";
               //All table rows in database presented in html table
               while($row = $result->fetch_array()){
                  echo "<tr>";
                  echo "<td><input type='hidden' name='user_id[]' value='".$row['user_id']."' /></td>";
                  echo "<td>username  :<input type='text' name='username[]' value='".$row['username']."' /></td>";
                  echo "<td>email  :<input type='text' name='email[]' value='".$row['email']."' /></td>";
                  echo "<td>rank  :<input type='number' name='rank[]' value='".$row['rank']."' /></td>";
                  echo "</tr>";
               }
            echo "<input type='submit' name='update' value='UPDATE' />";
         ?>
      <table>
   </form>
<?php
   if(isset($_POST['update'])){ 
      $total = count($_POST['rank']); 
      $user_id_arr = $_POST['user_id']; 
      $rank_arr = $_POST['rank']; 
      for($i = 0; $i < $total; $i++){ 
         $user_id = $user_id_arr[$i]; 
         $rank = $rank_arr[$i]; 
         $query = "UPDATE users SET `rank`= '".$rank."' WHERE `user_id`= '".$user_id."'"; 
         $MySQLi_CON->query($query); 
         header('Location: test7.php');
      } 
   }
?>

当我按UPDATE按钮时,我得到PHP注意:数组到字符串转换….

它指的是第30行,它是这一行:

$query =“UPDATE用户SET rank = $_ POST [rank] [$row] WHERE user_id = $value”;

编辑:编辑上面的代码到工作代码.谢谢@Frayne Konok的帮助.

解决方法:

You did a great mistake here, Why you use the $result in foreach
loop?? FRom where the $result comes?? The $result is the resource
of the sql query.

试试这个:

if(isset($_POST['update'])){
    $total = count($_POST['rank']);
    $user_id_arr = $_POST['user_id'];
    $rank_arr = $_POST['rank'];
    for($i = 0; $i < $total; $i++){
        $user_id = $user_id_arr[$i];
        $rank = $rank_arr[$i];
        $query = "UPDATE users SET `rank`= '".$rank."' WHERE `user_id`= '".$user_id."'";  
        $MySQLi_CON->query($query);
    }
}

试试这个,让我知道是否有任何问题.

本文标题为:如何使用整个html表更新数据库(PHP,MySQL)

基础教程推荐