Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas con INSERT INTO en PDO

Estas en el tema de Problemas con INSERT INTO en PDO en el foro de PHP en Foros del Web. Hola, buenas tardes, acudo a ustedes porque ya intente varias cosas,estoy trabajando con PDO para conectar con una base de datos, en la cual quiero ...
  #1 (permalink)  
Antiguo 13/05/2015, 12:05
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Problemas con INSERT INTO en PDO

Hola, buenas tardes, acudo a ustedes porque ya intente varias cosas,estoy trabajando con PDO para conectar con una base de datos, en la cual quiero insertar en una tabla los registros de un nuevo usuario de un formulario, cuando recien empece a hacerlo, lo hacia de la siguiente forma

Código PHP:
$sqlinser="INSERT INTO ".$prefijo_tiendas."_usuarios VALUES('$id', '$nombre','$apellidos','$usuario','$contra','$email','$fecha','$idrol')";
     
$querys=$con->query($sqlinser); 
Cuando hice la primera prueba, lo hizo sin problema alguno, pero cuando despues quise hacer otras pruebas, parecia que lo hacia, pero no insertaba ningun dato en la tabla, estuve buscando en la web y vi que es mejor hacer un Insert con una consluta preparada, en la cual tambien trato de hacerlo de varias formas y sigue pasando lo mismo, aparenta que hace la consulta, pero no hace ninguna insersion en la tabla, lo he intentado de las siguientes maneras.
Código PHP:
$sqlinser="INSERT INTO ".$prefijo_tiendas."_usuarios VALUES('$id', '$nombre','$apellidos','$usuario','$contra','$email','$fecha','$idrol')";
     
$querys=$con->exec($sqlinser); 
Código PHP:
$preparar=$con->prepare("INSERT INTO ? VALUES(?,?,?,?,?,?,?,?)");
      
$preparar->execute(array($tabla$id$nombre$apellidos$usuario$contra$email$fecha$idrol)); 
Código PHP:
$preparar=$con->prepare("INSERT INTO :tabla VALUES(:id,:nombre,:apellidos,:usuario,:contra,:email,:fecha,:perfil)");
      
$preparar->bindParam(':tabla'$tablaPDO::PARAM_STR12);
      
$preparar->bindParam(':id'$idPDO::PARAM_STR12);
      
$preparar->bindParam(':mombre'$nombrePDO::PARAM_STR12);
      
$preparar->bindParam(':apellidos'$apellidosPDO::PARAM_STR12);
      
$preparar->bindParam(':usuario'$usuarioPDO::PARAM_STR12);
      
$preparar->bindParam(':contra'$contraPDO::PARAM_STR12);
      
$preparar->bindParam(':email'$emailPDO::PARAM_STR12);
      
$preparar->bindParam(':fecha'$fechaPDO::PARAM_STR12);
      
$preparar->bindParam(':perfil'$perfilPDO::PARAM_STR12);
      
$preparar->execute(); 
Y tampoco, sigue pasando lo mismo en que aparenta hacer el proceso, pero no inserta nada en la tabla, entonces no se si puedan orientarme en que estoy haciendo mal
  #2 (permalink)  
Antiguo 13/05/2015, 12:10
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Problemas con INSERT INTO en PDO

¿Como es la estructura de tu tabla?¿Tiene un campo declarado como llave primaria y que se autoincremente?
__________________
¡Malditas computadoras que siempre hacen lo que les DIGO que hagan, no lo que QUIERO que hagan!
  #3 (permalink)  
Antiguo 13/05/2015, 12:16
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problemas con INSERT INTO en PDO

Cita:
Iniciado por camsworksinc Ver Mensaje
¿Como es la estructura de tu tabla?¿Tiene un campo declarado como llave primaria y que se autoincremente?
Efectivamente, tengo un campo declarado como llave primaria con autoicremento que es "id" tambien estan los campos "nombres", "apellidos", "usuario", "pass", "email", "falta", "idrol"
  #4 (permalink)  
Antiguo 13/05/2015, 16:46
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problemas con INSERT INTO en PDO

Se me ocurrio ingresar un var_dump($preparar->errorInfo()); para ver si arrojaba algun error, y me arrojaba un error que el $id ya existia en la base de datos... La variable $id la determino de la siguiente forma
Código PHP:
$con2="SELECT COUNT(*) FROM ".$prefijotienda."_usuarios";
      
$consulta=$con->query($con2);
      
$id$consulta+1
Tengo solamente un registro en esa tabla, entonces el resultado de $id siempre es 1 que es el id del unico registro que tengo y por eso no insertaba el registro al estar duplicado en la llave primaria, por alguna razon no esta contando los registros de la tabla, por lo que $consulta es igual a 0 siempre aunque tengo u registro, cambio query() a exec() y no hay cambio, sesupone que esa es la forma correcta para contar los registros de una tabla con PDO no es asi?
  #5 (permalink)  
Antiguo 13/05/2015, 16:49
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Problemas con INSERT INTO en PDO

Si tu id es auto numérico no requieres calcularlo como lo estas haciendo.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 13/05/2015, 16:57
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problemas con INSERT INTO en PDO

Cita:
Iniciado por hhs Ver Mensaje
Si tu id es auto numérico no requieres calcularlo como lo estas haciendo.
Pongo el id como autoincremento mas por costumbre que por otro cosa, calculo el id solo para tener un orden en la tabla, porque se van a estar eliminando usuarios, entonces va a llegar el punto en el que los id van a estar muy saltados como:
1
7
50
90
124

En vez de

1
2
3
4
5...

Por eso calculo el id... Bueno, puedo tal vez omitirlo, pero usaba un sistema parecido para comprobar si el usuario exite en la tabla, algo como esto

Código PHP:
$conteus="SELECT COUNT(*) FROM ".$prefijotienda."_usuarios WHERE usuario='$usuario'";
     
$conver=$con->exec($conteus);
     if(
$conver == 0){
echo 
"usuario no existe";
//codigo para ingresar usuario en tabla
}
else{
echo 
"Si existe";
//codigo para regresar a pantalla y mandar mensaje de error

Entonces al no hacer el conteo, nunca va a marcar el error de que el usuario existe y lo va a duplicar, ya hice la prueba
  #7 (permalink)  
Antiguo 13/05/2015, 17:33
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problemas con INSERT INTO en PDO

Bueno, me auto respondo, voy a tomar lo que me dijo hhs y voy a dejar el id del autoincremento para ya no calcularlo, y con el otro para validar si el usuario existe, encontre otra forma que es

Código PHP:
$conteus="SELECT * FROM ".$prefijotienda."_usuarios WHERE usuario='$usuario'";
     
$conver=$con->query($conteus);
     
$converr=$conver->fetch(PDO::FETCH_ASSOC);
     if(empty(
$converr)){
echo 
"No existe";
//codigo para insertar usuario
}
else{
//codigo para arrojar mensaje de error que existe usuario

Tal vez sea poco ortodoxa pero es lo unico que encuentro por el momenot, si alguien sabe por que no hace SELECT COUNT(*) por favor aviseme

Etiquetas: fecha, formulario, insert, pdo, registro, sql, tabla, usuarios
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 10:17.