last day (15 days later) » 

10:49
0
Q: Problemas al tratar de actualizar con pdo

sergibarcaAl tratar de editar un 'Curso' me genera este error, SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Mi formulario: <form action="vista%20normal.php?pagina=administrar_cursos" method="POST" enctype="multipart/form-data" autocomplete="off"> <...

Basicamente no puedes hacen bind de un mismo parametro 2 veces en la misma consulta, en este caso :id_curso, cambia uno de los :id_curso y bindeale el parametro otra vez.
Pues, me genera un error, SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens, pero lo he revisado y a mi parecer si coinciden...
A ver en la consulta tienes 9 parametros pero solo haces bindValue de 8, revisa que el numero de parametros sea el mismo y que ninguno de ellos se repita en el nombre que le des
@OscarR pues desconozco si es para alguna version en concreto, pero recuerdo de haber tenido problemas con esto en el pasado, y por el error que genera... La verdad me dejas en duda, a ver si cuando llege ha casa puedo hacer algunas pruebas.
@sergibarca fijate que en la consulta tienes nombre = :nombreCurso, y en el $actualizar->bindValue(':nombre', $curso->getNombreCurso());, por lo que :nombreCurso no se asigna ningun parametro ya que no coincide con :nombre
He realizado todas las modificaciones que me habéis comentado pero no funciona...
@Xerif si todo eso lo estuve modificando y probando pero tampoco.... esto empieza a ser desesperante jaja
@sergibarca Me estoy dando cuenta de que tienes mas ->bindValue que no coinciden, al principio no me fije y lo pase por alto
10:50
Gracias por el apoyo
Yo la verdad que ya no consigo ver...
@sergibarca ¿tienes las notificaciones de php activadas?
error_reporting(E_ALL);
ini_set('html_errors', 1);
ini_set('display_startup_errors', 1);
ini_set("display_errors", 1);
Al inicio del script
Estoy viendo que el campo estado es un select, por lo tanto vas a recibir un array
No veo que hace la función que lo recibe, ¿lo procesa como array?
He montado una copia de lo que tienes y funciona correctamente tratando cada dato como debe.
Puede ser lo del array ahora que lo dices por que no lo estoy tratando...
Prueba con ese campo así:
$stm->bindValue(':estado', $_POST['estado'][0]);
A ver si entra con eso
Como norma general cuando armas un formulario pones en el script un var_dump de $_POST para ver como llegan los datos y poder tratarlos para meterlos en consulta. De otra forma se pierde mucho tiempo sin saber que ocurre
Nada sigue igual pero esq a ver estoy ya tratando de hacer un echo $curso->getNombreCurso(); para ver si me saca algo pero tampoco saca nada entonces yo ya no se si esq no recoge los valores o k...
Prueba con var_dump($_POST); para ver que datos vienen del formulario
10:56
ok
array(10) { ["id_curso"]=> string(2) "13" ["nombreCurso"]=> string(9) "Elemental" ["cantAlumnos"]=> string(2) "10" ["fechaInicio"]=> string(10) "2001-01-17" ["fechaFin"]=> string(10) "2001-01-18" ["nivel_curso"]=> string(9) "Elemental" ["foto"]=> string(4) "foto" ["estado"]=> array(1) { [0]=> string(1) "0" } ["actualizarCurso"]=> string(10) "actualizar" ["editarCurso"]=> string(6) "Editar" }
esto es lo que me saca
Trae todos los datos
Las funciones get de la clase, tiene todos un return?
Y si haces un var_dump($curso) dentro de actualizarCurso($curso) ¿Retorna todos los valores que necesitas?
En algún sitio está bailando algo que no deja actualizar
ahh aqui esta el problema.... me saca un array de objetos y null
object(Curso)#2 (8) { ["id_curso"]=> NULL ["nombre"]=> NULL ["estado"]=> NULL ["cant_alumnos"]=> NULL ["fecha_fin"]=> NULL ["fecha_inicio"]=> NULL ["foto"]=> NULL ["nivel_curso"]=> NULL }
Vale, ya tenemos algo ;-)
Ahora hay que ver por que no retorna
11:05
si... jajajaja me siento mas aliviado
voy a ver lo set
Como tienes los set y los get?
Ok!
hasta el isset tiene datos
No me lo puedo creer.... se ve que esta instancia la clase Curso lo elimine y ya esta....
muchas gracias por la ayuda... ;)
Ya funciona?
Sii! Mira el problema esque public function actualizarCurso($curso){ no le pasaba curso si no otra variable entonces tuve que crear $curso = new Curso(); ahi estaba el probelma...
@sergibarca Ok! me alegro.
11:10
voy a marcarte como solución, gracias nos vemos por aquí :)
Gracias!

last day (15 days later) »