he hecho un crud de personas con consultas preparadas en pdo que funcionaba y ahora me han mandado hacerlo de una manera que no entiendo, que es pasando los valores a usar en un array en el execute(). Por ejemplo, para crear una persona puse esto y me funcionaba:
$ stmt=conectar()->prepare("INSERT INTO persona (codigo,nombre) VALUES (:codigo,:nombre)"); $ stmt->bindParam(':codigo',$ codigo); $ stmt->bindParam(':nombre',$ nombre); $ codigo=$ _GET['codigo']; $ nombre=$ _GET['nombre']; $ stmt->execute(); $ texto="Persona creada!";
Ahora he buscado por internet y he escrito esto:
$ stmt=conectar()->prepare("INSERT INTO persona (codigo,nombre) VALUES (:codigo,:nombre)"); $ stmt->execute(array(':codigo'->$ codigo,':nombre'=>$ nombre));
Y me dice: Notice: Trying to get property of non-object in C:\xampp\htdocs\xampp\ad\personas\nuevo.php on line 59 SQLSTATE[HY093]: Invalid parameter number: parameter was not defined Como no me funcionaba, he escrito esto:
$ stmt=conectar()->prepare("INSERT INTO persona (codigo,nombre) VALUES (:codigo,:nombre)"); $ persona=new Persona($ codigo,$ nombre); $ stmt->execute((array)$ persona);
Y me sale el siguiente fallo: SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‘codigo’ cannot be null