我遇到此功能的问题...我的数据库中没有更新
这是功能
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 )
那么,我的代码出了什么问题?我收到了成功消息,但我的数据库
中没有更新任何内容答案 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();
}
}
我希望它有所帮助