PHP - consulta preparada y array

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta preparada y array

Publicado por Charly (69 intervenciones) el 13/01/2018 13:46:52
Hola, 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:
1
2
3
4
5
6
7
$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:
1
2
$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:
1
2
3
$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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Georkis
Val: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

consulta preparada y array

Publicado por Georkis (32 intervenciones) el 13/01/2018 16:40:45
El error es la estructuración que tiene en la base de datos.... no le esta llegando el parametro como es... puede ser que tengas el campo del formulario mal... y no tenga el nombre que debe de llevar... comiensa por ahi..... verifica si el campo codigo tiene el nombre como es...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta preparada y array

Publicado por Charly (69 intervenciones) el 13/01/2018 19:11:06
Los campos están bien escritos en todos los sitios.
Creo que el problema está en el formato numérico del campo 'codigo' que al pasarlo al array genera algún conflicto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta preparada y array

Publicado por italo (150 intervenciones) el 17/01/2018 21:57:41
Hola,

en el execute en ':codigo' has escrito "->"

1
2
3
4
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));


prueba asi

1
2
3
4
5
6
7
$stmt=conectar()->prepare("INSERT INTO persona (codigo, nombre) VALUES (:codigo, :nombre)");
$codigo = $_GET['codigo'];
$nombre = $_GET['nombre'];
 
if($stmt->execute(array(':codigo'=>$codigo, ':nombre'=>$nombre))) {
    echo "OK, nuevo registro creado!";
}

salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar