Trying to edit a 'Course' generates this error,
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
My form:
<form action="vista%20normal.php?pagina=administrar_cursos" method="POST" enctype="multipart/form-data" autocomplete="off">
<!--Recuperamos le id y lo pasamos de forma oculta-->
<input type="hidden" name="id_curso" placeholder="Id Curso" id="id_curso" value="<?php echo $curso->getIdCurso(); ?>">
<input type="text" name="nombreCurso" placeholder="Nombre curso" value="<?php echo $curso->getNombreCurso(); ?>">
<input type="text" name="cantAlumnos" placeholder="Cantidad alumnos" value="<?php echo $curso->getCantAlumnos(); ?>">
<input type="date" name="fechaInicio" placeholder="Fecha inicio" value="<?php echo $curso->getFechaInicio(); ?>">
<input type="date" name="fechaFin" placeholder="Fecha fin" value="<?php echo $curso->getFechaFin(); ?>">
<input type="date" name="nivel_curso" placeholder="Nivel Curso" value="<?php echo $curso->getNivelCurso(); ?>">
<input type="text" name="foto" placeholder="foto" value="foto">
<!-- <input type="time" name="duracion" placeholder="Duración" value="<?php //echo $curso->getFechaFin(); ?>"> -->
<select name="estado[]">
<option value="0">Activado</option>
<option value="1">Desactivado</option>
</select>
<input type="hidden" name="actualizarCurso" value="actualizar"><!--Con esto ejecutamos la funcion de actualizar-->
<input type="submit" name="editarCurso" value="Editar">
Course Manager,
elseif(isset($_POST['actualizarCurso'])){
$curso->setIdCurso($_POST['id_curso']);
$curso->setNombreCurso($_POST['nombreCurso']);
$curso->setCantAlumnos($_POST['cantAlumnos']);
$curso->setFechaInicio($dateInicio);
$curso->setFechaFin($dateFin);
$curso->setNivelCurso($_POST['nivel_curso']);
$curso->setFoto('foto');
$curso->setEstadoCurso($_POST['estado']);
$crud->actualizarCurso($curso);
//header('Location: vista%20normal.php?pagina=lista_cursos');
}
And finally the updateCourse function,
public function actualizarCurso($curso){
$curso = new Curso();
$db = BaseDatos::conectar();
try {
$actualizar = $db->prepare('
UPDATE Curso
SET
id_curso = :id_curso,
nombre = :nombreCurso,
cant_alumnos = :cantAlumnos,
fecha_inicio = :fechaInicio,
fecha_fin = :fechaFin,
nivel_curso = :nivel_curso,
foto = :foto,
estado = :estado
WHERE id_curso = :id_curso
');
echo $curso->getNombreCurso();
$actualizar->bindValue(':id_curso', $curso->getIdCurso());
$actualizar->bindValue(':nombre', $curso->getNombreCurso());
$actualizar->bindValue(':cant_alumnos', $curso->getCantAlumnos());
$actualizar->bindValue(':fecha_inicio', $curso->getFechaInicio());
$actualizar->bindValue(':fecha_fin', $curso->getFechaFin());
$actualizar->bindValue(':nivel_curso', $curso->getNivelCurso());
$actualizar->bindValue(':foto', $curso->getFoto());
$actualizar->bindValue(':estado', $curso->getEstadoCurso());
$actualizar->execute();/*ejecutamos la sentencia.*/
}
catch (PDOException $e) {
print $e->getMessage()."Este es un error";
}
}