PHP - 如何使用foreach更新多行?

时间:2017-02-09 09:08:17

标签: php mysql

所以我正在创建一个将多行更新为mysql的php文件,但每当我提交时我都会遇到问题,而且我不知道我是否正在使用foreach。这是我的代码:

$query = "SELECT id, departments, deptName, headOfOffice FROM aip";
$result = mysqli_query($db,$query);
$count = mysqli_num_rows($result);

while ($row = mysqli_fetch_assoc($result)) {

        echo '<tr>';
        echo '<td><input type="text" name="id[]" value="'.$row['id'].'" readonly></td>';
        echo '<td><input type="text" id ="department_code" name="department_code[]" value="'.$row['departments'].'"></td>';
        echo '<td><input type="text" id="department_name" name="department_name[]" value="'.$row['deptName'].'"></td>';
        echo '<td><input type="text" id="department_head" name="department_head[]" value="'.$row['headOfOffice'].'"></td>';
        echo '</tr>';

}

echo '<tr>';
echo '<td></td>';
echo '<td></td>';
echo '<td><input type="submit" name="update" value="Update">';
echo '</tr>';



if($_SERVER["REQUEST_METHOD"] == "POST"){

$deptid = $_POST['id'];
$code = $_POST['department_code'];
$dname = $_POST['department_name'];
$dhead =$_POST['department_head'];

foreach($_POST['id'] as $count){ \\ i don't know if this is right.

$query2 = "UPDATE aip SET deparments = '".$code[$count].'" WHERE id = "'.$deptid[$count]."'";
$result2 = mysqli_query($db,$query2);
}

 }

错误说&#34;未定义的偏移量:2&#34; 我是这里的新手,这是我第一次使用数组。希望有人能提供帮助。请!

3 个答案:

答案 0 :(得分:3)

foreach($_POST['id'] as $count => $id){
    $query2 = "UPDATE aip SET deparments = '".$code[$count]."' WHERE id = '".$deptid[$count]."'";
    $result2 = mysqli_query($db,$query2);
}

P.S。您的代码易受SQL注入攻击

答案 1 :(得分:0)

使用foreach有两种方法:

foreach($array as $key => $value){
    ...
}

foreach($array as $value){
    ...
}

foreach循环将迭代遍历数组中的所有元素,在每个元素的括号中执行一次代码,分别在$key$value中保存元素的键名和值(您可以使用$value$key之外的其他内容。

我不完全理解你在代码中做了什么,所以如果你添加一个解释,我将能够解决你的具体情况;

答案 2 :(得分:0)

  

我已经改变了你的脚本..请使用我的脚本。你不需要改变任何东西只需复制和粘贴我的脚本。

    if($_SERVER["REQUEST_METHOD"] == "POST"){
         $data = $_POST;

        if(count($data['id'])>0){
          foreach($data as $key=>$item){
              $query2 = "UPDATE aip SET deparments = '".$item['department_code'][$key]."', deptName = '".$item['department_name'][$key]."',headOfOffice = '".$item['department_head'][$key]."'  WHERE id = '".$item['id'][$key]."'";
              $result2 = mysqli_query($db,$query2);
        }
   } 
}