Foros del Web » Programando para Internet » PHP »

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

Estas en el tema de La consulta SQL contiene errores.Column count doesn't match value count at row 1 en el foro de PHP en Foros del Web. Hola estoy intentado insertar datos en una base de datos pero me tira el error: La consulta SQL contiene errores.Column count doesn't match value count ...
  #1 (permalink)  
Antiguo 04/01/2015, 16:28
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 10 meses
Puntos: 0
Exclamación La consulta SQL contiene errores.Column count doesn't match value count at row 1

Hola estoy intentado insertar datos en una base de datos pero me tira el error:
La consulta SQL contiene errores.Column count doesn't match value count at row 1

Os dejo el fichero php y la base de datos haber si alguien sabe solucionarlo por que yo creo que es una chorrada lo que me esta tirando para atras...

Código PHP:
Ver original
  1. <?php
  2. /* CONECTAR CON BASE DE DATOS **************** */  
  3.    $con = mysql_connect('localhost','root','dmrx921');
  4.    if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
  5. /* ********************************************** */
  6. /* CONECTA CON LA BASE DE DATOS  **************** */
  7.    $database = mysql_select_db("despliegate",$con);
  8.    if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
  9. /* ********************************************** */
  10. //REALIZAR CONSULTA
  11. $sql = "INSERT INTO usuarios(nombre, nick, apellidos, email, contrasena) VALUES  
  12.            (
  13.            '".$_POST['nombre']."',
  14.            '".$_POST['nick']."',
  15.            '".$_POST['apellidos']."',
  16.            '".$_POST['contrasena']."'
  17.            )";
  18.                 $result = mysql_query($sql);
  19.                 if (! $result){
  20.                                echo "La consulta SQL contiene errores.".mysql_error();
  21.                                exit();
  22.                 }else {echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
  23. ref=/paginas/prueba/index.html>Volver</a&gt;'";
  24.                 }
  25. ?>

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.           `contrasena` VARCHAR (50) NOT NULL
  12.          
  13.         );
  #2 (permalink)  
Antiguo 04/01/2015, 16:33
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

Código PHP:
    <?php
    
/* CONECTAR CON BASE DE DATOS **************** */  
       
$con mysql_connect('localhost','root','dmrx921');
       if (!
$con){die('ERROR DE CONEXION CON MYSQL: ' mysql_error());}
    
/* ********************************************** */
    /* CONECTA CON LA BASE DE DATOS  **************** */
       
$database mysql_select_db("despliegate",$con);
       if (!
$database){die('ERROR CONEXION CON BD: '.mysql_error());}
    
/* ********************************************** */
    //REALIZAR CONSULTA
    
$sql "INSERT INTO usuarios(nombre, nick, apellidos, email, contrasena) VALUES  
               (
               '"
.$_POST['nombre']."',
               '"
.$_POST['nick']."',
               '"
.$_POST['apellidos']."',
               '"
.$_POST['contrasena']."'
               )"
;
                    
$result mysql_query($sql);
                    if (! 
$result){
                                   echo 
"La consulta SQL contiene errores.".mysql_error()." <br><br>".$sql;
                                   exit();
                    }else {echo 
"<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
    ref=/paginas/prueba/index.html>Volver</a&gt;'"
;
                    }
    
?>
Prueba que te muestra esto.
  #3 (permalink)  
Antiguo 04/01/2015, 16:38
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

Te falla porque no estas insertando el campo emai, si no quieres insertar nada usa NULL.
Saludos.
  #4 (permalink)  
Antiguo 04/01/2015, 16:47
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

gracias a los 2 algo que si fallaba era el email no me habia fijado que faltaba, tambien añadi un NULL para el campo auto_increment pero al ejecutarlo tira el siguiente error

Parse error: syntax error, unexpected '"', ' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp\htdocs\paginas\prueba\reg.php on line 15

Os dejo el fichero php haber si alguien me ayuda con el

Código PHP:
Ver original
  1. <?php
  2. /* CONECTAR CON BASE DE DATOS **************** */  
  3.    $con = mysql_connect('localhost','root','dmrx921');
  4.    if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
  5. /* ********************************************** */
  6. /* CONECTA CON LA BASE DE DATOS  **************** */
  7.    $database = mysql_select_db("despliegate",$con);
  8.    if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
  9. /* ********************************************** */
  10. //REALIZAR CONSULTA
  11. $sql = "INSERT INTO usuarios(id_usuario, nombre, nick, apellidos, email, contrasena) VALUES  
  12.            (
  13.            
  14.             '"['NULL']"',
  15.            '".$_POST['nombre']."',
  16.            '".$_POST['nick']."',
  17.            '".$_POST['apellidos']."',
  18.            '".$_POST['email']."'
  19.            '".$_POST['contrasena']."'
  20.            
  21.            )";
  22.                 $result = mysql_query($sql);
  23.                 if (! $result){
  24.                                echo "La consulta SQL contiene errores.".mysql_error();
  25.                                exit();
  26.                 }else {echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
  27. ref=/paginas/prueba/index.html>Volver</a&gt;'";
  28.                 }
  29. ?>

Gracias por adelantado, espero aprender de esto rapido xD
  #5 (permalink)  
Antiguo 04/01/2015, 16:55
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

NULL va sin corchetes y sin comillas.
  #6 (permalink)  
Antiguo 04/01/2015, 17:11
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

Gracias pero puesto sin nada da La consulta SQL contiene errores.Column count doesn't match value count at row 1

Y puesto asi '"NULL"', da el error Parse error: syntax error, unexpected 'NULL' (T_STRING) in C:\xampp\htdocs\paginas\prueba\reg.php on line 14
Me estoy volvieno loco con esto....
  #7 (permalink)  
Antiguo 04/01/2015, 17:21
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

Debes poner
Código PHP:
'".NULL."' 
.
Y el error que te arroja ya te dije que es porque no concuerda el numero de cols de tu tabla y el número de campos que insertas.
  #8 (permalink)  
Antiguo 04/01/2015, 17:35
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 16 años, 4 meses
Puntos: 56
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

yo creo que es

Código:
".NULL."
sin las comilla simple, porque en la sentencia sql tiene que quedar

Código:
INSERT INTO usuarios(id_usuario, nombre, nick, apellidos, email, contrasena) VALUES  ( null, 'elnombrequesea', ...
porque esta usando la comilla doble para "cambiar" de php a sql (seguro que hay una forma ms correcta de decirlo, pero no se explicarlo mejor) y la simple es la que utiliza sql para indicar que algo es un valor de tipo strng, no un integer ni un null, o un datestamp, ni tampoco el nombre de una columna, etc
__________________
Un saludo! :-)
Quiero ser el primero
  #9 (permalink)  
Antiguo 04/01/2015, 17:38
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

Gracias por aclararme la sintaxis para introducir datos, la cosa es que por mas que lo reviso yo veo todos los campos, no se que puede faltar...
Lo que yo pienso es que el campo al ser auto_increment y estar definido como not null no deja insertar un valor null en ese campo y por eso me da ese error
  #10 (permalink)  
Antiguo 04/01/2015, 17:45
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

Cita:
Iniciado por darchy Ver Mensaje
yo creo que es

Código:
".NULL."
sin las comilla simple, porque en la sentencia sql tiene que quedar

Código:
INSERT INTO usuarios(id_usuario, nombre, nick, apellidos, email, contrasena) VALUES  ( null, 'elnombrequesea', ...
porque esta usando la comilla doble para "cambiar" de php a sql (seguro que hay una forma ms correcta de decirlo, pero no se explicarlo mejor) y la simple es la que utiliza sql para indicar que algo es un valor de tipo strng, no un integer ni un null, o un datestamp, ni tampoco el nombre de una columna, etc
Lo acabo de probar y me da el error La consulta SQL contiene errores.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'as', 'as', 'as', 'as' ' at line 4
creo que asi no es....
  #11 (permalink)  
Antiguo 04/01/2015, 17:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

¿Por qué no empiezas por verificar cómo queda la sentencia una vez construida con un simple "echo"?
Código PHP:
Ver original
  1. <?php
  2. /* CONECTAR CON BASE DE DATOS **************** */  
  3.    $con = mysql_connect('localhost','root','dmrx921');
  4.    if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
  5. /* ********************************************** */
  6. /* CONECTA CON LA BASE DE DATOS  **************** */
  7.    $database = mysql_select_db("despliegate",$con);
  8.    if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
  9. /* ********************************************** */
  10. //REALIZAR CONSULTA
  11. $sql = "INSERT INTO usuarios(nombre, nick, apellidos, email, contrasena)
  12.            VALUES  
  13.            (
  14.            '".$_POST['nombre']."',
  15.            '".$_POST['nick']."',
  16.            '".$_POST['apellidos']."',
  17.            '".$_POST['email']."'
  18.            '".$_POST['contrasena']."'
  19.            )";
  20.  
  21. // --------------------------------
  22. // VERIFICA LO QUE QUEDO ARMADO
  23. // --------------------------------
  24.     echo $sql;
  25. // --------------------------------
  26.  
  27.                 $result = mysql_query($sql);
  28.                 if (!$result){
  29.                                echo "La consulta SQL contiene errores.".mysql_error();
  30.                                exit();
  31.                 }else {echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
  32. ref=/paginas/prueba/index.html>Volver</a&gt;'";
  33.                 }
  34. ?>
Copia lo que te muestre y postealo acá así podemos verlo y entender qué te pasa...

Nota: Quite lo que considero innecesario en el INSERT.
__________________
¿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 04/01/2015, 19:03
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

lo que nadie te ha dicho es que tienes que debugear
tienes que ver lo que estas consultando colocando un echo o mi preferido var_dump();
para ver lo que estas haciendo.
como consejo, si no te andan las query's, escapalas con echo, despues correlas en phpmyadmin o el que quieras para ver si funcionan.
  #13 (permalink)  
Antiguo 05/01/2015, 07:56
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 16 años, 4 meses
Puntos: 56
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

xD precisamente eso estaba pensando, que le hagas un echo a ver qué estas enviando...
__________________
Un saludo! :-)
Quiero ser el primero
  #14 (permalink)  
Antiguo 05/01/2015, 09:10
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

La consulta y los datos estaban bien recogidos eso ya lo habia comrpbado yo antes lo que fallaba es que faltaba una coma por eso daba el error de que faltaba un campo.

Aun asi gracias por explicar como se inserta un valor en el campo auto_increment.

Tema solucionado.
  #15 (permalink)  
Antiguo 05/01/2015, 09:14
Avatar de Rodrigoespoz  
Fecha de Ingreso: agosto-2013
Ubicación: Quillota
Mensajes: 14
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: La consulta SQL contiene errores.Column count doesn't match value count at

hola espero que te sirva y que resuelva tu problema
Código PHP:
<?php
/* CONECTAR CON BASE DE DATOS **************** */  
   
$con mysql_connect('localhost','root','dmrx921');
   if (!
$con){die('ERROR DE CONEXION CON MYSQL: ' mysql_error());}
/* ********************************************** */
/* CONECTA CON LA BASE DE DATOS  **************** */
   
$database mysql_select_db("despliegate",$con);
   if (!
$database){die('ERROR CONEXION CON BD: '.mysql_error());}
/* ********************************************** */
//REALIZAR CONSULTA
if (isset($_POST['nombre'])){
$nom=$_POST['nombre'];
$nick=$_POST['nick'];
$app=$_POST['apellidos'];
$pass=$_POST['contrasena'];
//si el mail esta vacio si no asignale el campo por post y revisa que en tu formulario este el method:POST
$mails=NULL;


$sql "INSERT INTO usuarios(nombre, nick, apellidos, email, contrasena) VALUES  
            ('$nom', '$nick', '$app',$mails, '$pass')"
;
                
$result mysql_query($sql);
                if (! 
$result){
                               echo 
"La consulta SQL contiene errores.".mysql_error();
                               exit();
                }else {echo 
"<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
ref=/paginas/prueba/index.html>Volver</a&gt;'"
;
                }
}
?>

Última edición por Rodrigoespoz; 05/01/2015 a las 09:18 Razón: falta info

Etiquetas: count, html, match, mysql, row, select, sql, 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:39.