pdo foreach()数据库中没有更新

时间:2016-03-17 15:50:51

标签: php pdo

我遇到此功能的问题...我的数据库中没有更新

这是功能

 public function editMultiDocenteGrupo($idDocentes, $mudaGrupo){
     try {
    $stmt = $this->db->prepare("UPDATE `esmaior_ca`.`professor` SET `teacher_grupo` = :teacher_grupo WHERE `idteacher` = :idteacher");
    $stmt->bindParam(':teacher_grupo', $mudaGrupo, PDO::PARAM_INT);
    $stmt->bindParam(':idteacher', $idDocentes, PDO::PARAM_STR);
    $myArray = explode(',', $idDocentes);
        foreach($myArray as $id=> $mudaGrupo){       
            $idDocentes = $id;
            if (!$stmt->execute()) {
                print_r($stmt->errorInfo());
                return array('status' => 'error', 'message' => 'Opppss...Os grupos dos docentes não foram atualizados...');
            } else {
               return array('status' => 'success', 'message' => 'Os grupos dos docentes foram atualizados com sucesso...');
            } 
        }
    } catch (PDOException $e) {
        echo $e->getMessage();
    }

}

当我使用print_r($ myarray)时,我有这个结果

Array ( [0] => 343 [1] => 256 [2] => 245 [3] => 265 [4] => 287 [5] => 201 [6] => 210 [7] => 275 [8] => 271 [9] => 260 ) 

那么,我的代码出了什么问题?我收到了成功消息,但我的数据库

中没有更新任何内容

1 个答案:

答案 0 :(得分:0)

您是否尝试过在每次迭代中绑定$ id? $ mudaGrupo没有变化(根据你的评论)所以你只需要绑定一次。

您还需要更改foreach结构。见下文。

public function editMultiDocenteGrupo($idDocentes, $mudaGrupo){
    try {

        $stmt = $this->db->prepare("UPDATE `esmaior_ca`.`professor` SET `teacher_grupo` = :teacher_grupo WHERE `idteacher` = :idteacher");
        $stmt->bindParam(':teacher_grupo', $mudaGrupo, PDO::PARAM_INT); // From your comment it seems that $mudaGroup is a single value, so it doesn't change for all the records
        $myArray = explode(',', $idDocentes);
        $failure = false;

        foreach($myArray as $id){
            $stmt->bindParam(':idteacher', $id, PDO::PARAM_STR);
            if (!$stmt->execute()) {
                print_r($stmt->errorInfo());
                $failure = true;
                break;
            }
        }

        if ($failure) {
            return array('status' => 'error', 'message' => 'Opppss...Os grupos dos docentes não foram atualizados...');
        } else {
            return array('status' => 'success', 'message' => 'Os grupos dos docentes foram atualizados com sucesso...');
        }
    } catch (PDOException $e) {
      echo $e->getMessage();
    }

}

我希望它有所帮助