Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ayuda con la insercion en BD

Estas en el tema de Ayuda con la insercion en BD en el foro de Mysql en Foros del Web. Hola, tengo un problema al insertar en BD con php y mysql. La aplicaicion consiste en una tienda de libros en la cual, los usuarios ...
  #1 (permalink)  
Antiguo 02/09/2010, 06:12
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda con la insercion en BD

Hola, tengo un problema al insertar en BD con php y mysql.
La aplicaicion consiste en una tienda de libros en la cual, los usuarios registrados pueden comentar los libros. El problema es que al insertar los comentarios, el primer parametro corresponde al id del comentario, que en teoria deberia ir aumentandose solo... pero no se como hacer esto.
He probado a dejarlo de esta forma:

$query= "INSERT into comentarios (id, autor, descripcion, validado, fk_libros)
VALUES (null, ".$autor.",".$descripcion.", 0, ".$id.")";
$db->query($db,$query);

siendo null el valor correspondiente al id de comentario, pero no me funciona, me da un error y me dice que esperaba que el primer argumento fuera un string...

Si podeis ayudarme por favor...
Gracias de antemano. Un saludo.
  #2 (permalink)  
Antiguo 02/09/2010, 06:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ayuda con la insercion en BD

En realidad, si es un autoincrement, lo que te conviene no es enviar NULL, sino simplemente omitir el campo:
Código MySQL:
Ver original
  1. INSERT INTO comentarios (descripcion, validado, fk_libros)
  2. VALUES ('".$autor."','".$descripcion."', 0, ".$id.");
Además, los valores ´que contienen cadenas de caracteres deben ir entre apóstrofes (') -no confundir con los acentos inversos (`)- o de lo contrario los interpretará como campos de la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/09/2010, 08:18
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Respuesta: Ayuda con la insercion en BD

Cita:
Iniciado por jonh_doe Ver Mensaje
el primer parametro corresponde al id del comentario, que en teoria deberia ir aumentandose solo... pero no se como hacer esto.
Si usas phpmyadmin, pinchas en la tabla, luego al campo id lo dejas como clave primaria (presionas el icono de la llave), luego edita el campo (presiona icono lapiz) y en la propiedad extra, elige auto_increment, grabas y ya estaría listo.
  #4 (permalink)  
Antiguo 02/09/2010, 09:04
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda con la insercion en BD

Muchas gracias por contestar y por hacerlo tan rapido ademas...
He estado mirando en las tablas a traves de php myadmin y ya esta señalada la pestaña de auto increment y ademas es clave primaria... aun asi, sigue sin funcionar... no se si es un problema de sintaxis de base de datos... pongo el codigo entero y el error por si me podeis decir algo...

10 $db= new mysqli('localhost','root','','uazon');
11 if (mysqli_connect_errno())
12 {
13 throw new Exception('Error conectando:'. mysqli_connect_error(),mysqli_connect_errno());
14 }
15
16 $query= "INSERT into comentarios (id, autor, descripcion, validado, fk_libros)".
17 "VALUES (".$autor.",".$descripcion.", 0, ".$id.")";
18 $db->query($db,$query);


Y el error es...

Warning: mysqli::query() expects parameter 1 to be string, object given in C:\xampp\htdocs\Sesion13\comentarLibroBD.php on line 18

Si os fijais el error esta en la linea 18... No se que puede ser. Gracias de nuevo. Un saludo.

David.
  #5 (permalink)  
Antiguo 02/09/2010, 09:10
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda con la insercion en BD

Otra duda que me ha surgido es que necesito recoger los comentarios y almacenarlos en un array y no se como...
Esto es lo que hago...

$query= "select * from comentarios where comentarios.fk_libros like '%". $id ."%' and validado = 1";
$resultado = $db->query($query);



do {
$comentarios = array(array($resultado->fetch_assoc()));
if ($comentarios === false) {
throw new Exception('Error realizando consulta:'.$consulta. ' ' .
$db->error, $db->errno);
}
}while($resultado->fetch_assoc());
$resultado->free();
$db->close();

return $comentarios;

Y lo que me devuelve es un comentario en caso de que el libro tenga solo uno y ningun comentario en caso de que el libro tenga mas de un comentario...
No se por que?

Gracias de antemano.
Un saludo.
  #6 (permalink)  
Antiguo 02/09/2010, 09:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ayuda con la insercion en BD

¿Leíste algo de lo que te dije:
1) Si es autoincrement, no mandes el campo, pero tampoco lo invoques:
Cita:
$query= "INSERT into comentarios (id, autor, descripcion, validado, fk_libros)".
"VALUES (".$autor.",".$descripcion.", 0, ".$id.")";
2) Los campos que contienen cadenas deben ir entre apóstrofes, y por encerrado, me refiero al valor de lacadena dentro del SQL, no al PHP:
Cita:
$query= "INSERT into comentarios (autor, descripcion, validado, fk_libros)".
"VALUES ('".$autor."','".$descripcion."', 0, ".$id.")";
O sea, ni miraste lo que te dije...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 02/09/2010, 10:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda con la insercion en BD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Leíste algo de lo que te dije:
1) Si es autoincrement, no mandes el campo, pero tampoco lo invoques:
2) Los campos que contienen cadenas deben ir entre apóstrofes, y por encerrado, me refiero al valor de lacadena dentro del SQL, no al PHP:
O sea, ni miraste lo que te dije...
Si que lei lo que me dijiste, pero quiza no me fijé lo suficiente... en cualquier caso, el error no venia de ahi sino de la linea 18...

donde puse

$db->query($db,$query);

he puesto

$insertado = $db->query($query);

y ya me funciona... aunque sigue sin hacerme la insercion... no se si sera porque la cosulta esta mal escrita...

la tengo asi...

$query= "INSERT into comentarios (autor, descripcion, validado, fk_libros) ".
"VALUES ('".$autor."','".$descripcion."', 1, ".$id.")";

no se que esta mal...

Gracias por la ayuda.

Etiquetas: bd
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:59.