PHP - consulta preparada y array

   
Vista:
Imágen de perfil de Charly

consulta preparada y array

Publicado por Charly cdum77@hotmail.com (41 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

consulta preparada y array

Publicado por Georkis (30 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

consulta preparada y array

Publicado por Charly cdum77@hotmail.com (41 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

consulta preparada y array

Publicado por italo (110 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
Revisar política de publicidad