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

[SOLUCIONADO] Error en consulta

Estas en el tema de Error en consulta en el foro de Mysql en Foros del Web. Hola estoy intentando hacer una consulta para añadir datos a la base y obtengo en siguiente error: La consulta SQL contiene errores.Column count doesn't match ...
  #1 (permalink)  
Antiguo 04/01/2015, 14:44
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Error en consulta

Hola estoy intentando hacer una consulta para añadir datos a la base y obtengo en siguiente error:

La consulta SQL contiene errores.Column count doesn't match value count at row 1

Lo e mirado por todo y nose a que se debe os dejo el fichero php que recoje e inserta los datos y la base de datos para haber si alguien sabe ayudarme.

Código mysql:
Ver original
  1. DROP DATABASE IF EXISTS `despliegate`;
  2.     CREATE DATABASE IF NOT EXISTS `despliegate`;
  3.      
  4.     USE despliegate;
  5.     CREATE TABLE IF NOT EXISTS `usuarios` (
  6.         `id_usuario` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  7.           `nombre` VARCHAR(20) NOT NULL,
  8.           `nick` VARCHAR(20) NOT NULL,
  9.           `apellidos` VARCHAR(50) NOT NULL,
  10.           `email` VARCHAR(50) NOT NULL,
  11.           `contraseña` VARCHAR (50) NOT NULL
  12.          
  13.         );

Código MySQL:
Ver original
  1. INSERT INTO usuarios VALUES  
  2.     (
  3.     '".$_POST['nombre']."',
  4.     '".$_POST['nick']."',
  5.     '".$_POST['apellidos']."',
  6.     '".$_POST['contraseña']."'
  7.     )

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
Gracias a todos por adelantado.

Última edición por gnzsoloyo; 04/01/2015 a las 15:21
  #2 (permalink)  
Antiguo 04/01/2015, 15:30
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: Error en consulta

Es un error común entre los que se inician...

Cuando usas campos autoincrementales es habitual hacer los INSERT omitiendo el valor que deberá ocupar ese AI, ya que se genera automáticamente, es cierto.
Pero la base de datos no puede adivinar cuándo un campo es AI cuando se lo omite. Lo primero que verifica es que la cantidad de datos que se envían en el VALUES coincide con la cantidad de campos de la tabla, y la tuya tiene seis (6) columnas, pero envías cinco (5 datos).

Cuando no se está enviando uno o más valores en un INSERT lo que debe hacerse es listar en el INSERT INTO tabla todos los campos que si se envían, omitiendo los que correspondan.

Código MySQL:
Ver original
  1. INSERT INTO usuarios(nombre, nick, apellidos, email, contraseña) VALUES  
  2.         (
  3.         '".$_POST['nombre']."',
  4.         '".$_POST['nick']."',
  5.         '".$_POST['apellidos']."',
  6.         '".$_POST['contraseña']."'
  7.         )

Una nota adicional importante: Aunque te los acepte, es una muy mala práctica usar lestras acentuadas en los nombres de objetos de BBDD, tales como columnas, tablas, bases, SP, o cualquier otro. Tienden a traer problemas aal ser corrompidos en los scripts de los lenguajes de programación, en la configuración de las colecciones, y los charset y collation de las bases de datos.
No lo uses.

Obviamente me estoy refiriendo a ese campo "contraseña", donde la "ñ" sin dudas en algun momento te traerá problemas...
__________________
¿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 04/01/2015, 16:12
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error en consulta

gracias ya esta cambiado lo de la "ñ" sustituida por una "n" pero al ejecutarlo me tira el mismo error que debo hacer para que funcione.

Última edición por dmrx921; 04/01/2015 a las 16:19
  #4 (permalink)  
Antiguo 04/01/2015, 16:23
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: Error en consulta

¿La única parte que leíste es lo de la "ñ"? ¿En serio?

Te expliqué claramente de donde sale el error de "Column count doesn't match value count at row 1", e incluso te escribí cómo va la query del INSERT, como para que la agregues en tu codigo.
¿Qué más necesitas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/01/2015, 16:40
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error en consulta

No lei todo lo que pusiste, añadi los campos que faltaban a mi código con la sintaxis creo que la correcta y ejecute el codigo y da error (T_CONSTANT_ENCAPSED_STRING) en la linea despues de poner el campo NULL para el AI.

pd:Solo quiero aprender y resolver mis dudas es cierto que tengo poca base por eso quiero aumentarla y si e venido aquí a postearlo es por que no e encontrado soluciones en google.
  #6 (permalink)  
Antiguo 04/01/2015, 17:04
Avatar de acopantepuy  
Fecha de Ingreso: junio-2010
Ubicación: Caracas
Mensajes: 21
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Error en consulta

Para completar la información que te está dando el colega gnzsoloyo todo eso está bien pero para solucionar tu problema debes asegurarte que estás pasando todos los campos, veo que te falta el correo y lo tienes como NOT NULL, adicionalmente si deseas mantener tu sentencia de la forma corta agrega un cero (0) al campo AUTONUMÉRICO con esto el motor de base de datos va saber qué hacer, no hace falta que escribas todo.

Respeta como dice el colega los caracteres acentuados no es buena practica.

Esto debe funcionar:

Código MySQL:
Ver original
  1. INSERT INTO usuarios VALUES  
  2.             (
  3.               0,            
  4.             '".$_POST['nombre']."',
  5.             '".$_POST['nick']."',
  6.             '".$_POST['apellidos']."',
  7.             '".$_POST['correo']."',
  8.             '".$_POST['contrasena']."'
  9.             )
  #7 (permalink)  
Antiguo 04/01/2015, 17:18
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error en consulta

Lo del email ya me di cuenta y lo arregle, ahora el problema es que poniendolo null o como dice usted con 0 me tira el error Column count doesn't match value count at row 1 cuando e comprobado ya que todos lo campos estan correctamente recogidos del formulario y coinciden con los de la base de datos.
  #8 (permalink)  
Antiguo 04/01/2015, 17:36
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: Error en consulta

Son seis campos. Si el primero no se ingresará (es innecesario ponerle NULL, si quieres lo haces), entonces deben ser cinco datos:
Código MySQL:
Ver original
  1. INSERT INTO usuarios(nombre, nick, apellidos, email, contrasena)
  2. VALUES  (
  3.         '".$_POST['nombre']."',
  4.         '".$_POST['nick']."',
  5.         '".$_POST['apellidos']."',
  6.         '".$_POST['correo']."',
  7.         '".$_POST['contrasena']."'
  8.         )
Si aún asi te da ese error, entonces tienes uno o más campos que se están corrompiendo a causa del contenido de las variables de PHP, y generando, accidentalmente, la existencia de mas datos.
Es un problema de programación, no de SQL.
Prueba ejecutando la query en phpMyamdin con datos reales. Si la query no falla, el error está en PHP, como te digo.

Posdata: No abras temas nuevos para el mismo asunto en diferentes Foros. Lo has en PHP, y se te puede infraccionar por eso ya que está expresamente prohibido en las Políticas de Uso de FDW.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 04/01/2015, 17:36
Avatar de acopantepuy  
Fecha de Ingreso: junio-2010
Ubicación: Caracas
Mensajes: 21
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Error en consulta

Es bastante raro puedes usar tambien NULL.

Tengo un ejemplo montado con cero (0) y se ejecuta de forma correcta.
  #10 (permalink)  
Antiguo 04/01/2015, 17:52
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error en consulta

Si es raro, si uso null me da el error de que estoy insertando menos columnas delas que tiene la base de datos pero si pongo con 0
Código PHP:
Ver original
  1. '".0."',
me da error Parse error: syntax error, unexpected '.0' (T_DNUMBER) in C:\xampp\htdocs\paginas\prueba\reg.php on line 14 probare como dice el compañero haciendo la consulta en sql con datos reales.

pd: gracias por la info acerca de la sancion no lo sabia.
  #11 (permalink)  
Antiguo 04/01/2015, 18:01
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: Error en consulta

Cita:
Iniciado por dmrx921 Ver Mensaje
Si es raro, si uso null me da el error de que estoy insertando menos columnas delas que tiene la base de datos pero si pongo con 0
Código PHP:
Ver original
  1. '".0."',
me da error Parse error: syntax error, unexpected '.0' (T_DNUMBER) in C:\xampp\htdocs\paginas\prueba\reg.php on line 14 probare como dice el compañero haciendo la consulta en sql con datos reales.

pd: gracias por la info acerca de la sancion no lo sabia.
Ese es un error de PHP, no de MySQL...

Por favor, concentrate, o lo solucionas en MySQL, para lo que deberías intentar hacer la prueba que te dije en phpMyadmin, o lo solucionas en PHP, caso en el cual cerraré este hilo por estar fuera de topico.

Para hacer la prueba en phpMyadmin, simplemente debes ejecutar algo como:
Código MySQL:
Ver original
  1. INSERT INTO usuarios(nombre, nick, apellidos, email, contrasena)
  2. VALUES  ('Juan', 'jdlp', 'De los Palotes', '[email protected]', 'acaentrosolamenteyo'');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 05/01/2015, 09:06
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Error en consulta

Ya esta salucionado al hacer las consultas me di cuenta de que faltba 1 coma y a eso se debia el error de que esroy insertando menos datos de los que ai en la tabla

Etiquetas: php, select, sql
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 11:09.