2012-08-16 23 views
8

Estoy creando un registro y estoy usando PHP directamente no JavaScript para enviar mi formulario a la base de datos MySQL, así que todo está funcionando bien, sin error de sintaxis o cualquier otra cosa, pero completo toda mi información y hago clic en 'Registrar' y aparece un mensaje que dice 'El recuento de columnas no coincide con el recuento de valores en la fila 1'.PHP ~ El recuento de columnas no coincide con el recuento de valores en la fila 1

Solo tengo 14 años, así que esto es bastante confuso para mí ¿alguien tiene una solución?

Esta es mi INSERT INTO código:

$sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender) 
VALUES('$firstname','$lastname','$email','$db_password','$day','$month','$year')") 
or die (mysql_error()); 
+0

¿Puede usted por favor publicar su código PHP? – ChrisM

+2

Probablemente el resultado de una instrucción 'INSERT' que tiene más o menos valores dentro de' VALUES() 'que los listados en las columnas'() '. Publica tu código y echaremos un vistazo. –

+1

Esto está relacionado con su sql más que su php – Sablefoste

Respuesta

16

Está tratando de insertar 7 valores en 8 columnas; le falta la inserción del género.

El código correcto sería:

$sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender) 
VALUES('$firstname','$lastname','$email','$db_password','$day','$month','$year', '$gender')") 
or die (mysql_error()); 

Por cierto, si no lo está haciendo, te recomiendo altamente escapar de las cuerdas en primer lugar, antes de pasarlos a la consulta de este modo:

$firstname=mysql_real_escape_string($firstname) 

Debería hacer esto con todas las variables anteriores. Here puede encontrar más información sobre la función de escape.

+0

Oh dios ... Soy tan nuevo. También tiendo a cometer ese error :( – Will

+0

¡No hay problema, me alegro de ayudar y bienvenido a SO! Acepte la respuesta que más le ha ayudado haciendo clic en la marca verde en el izquierda. – weltschmerz

+1

Hecho, me ayudó mucho. También he hecho mysql_real_escape_string; todo está funcionando ahora – Will

1

Con su código de allí, veo que olvide insertar $ género.

Al insertar datos en una tabla MySQL, tendrá que especificar qué datos van a qué columna. Esto se hace mediante la especificación de los nombres de columna antes de la parte VALORES:

INSERT INTO tblA (col1, col2) VALUES ('value1','value2'); 

Si se omite esa información, MySQL esperará que todas las columnas:

Si la tabla es la siguiente:

CREATE TABLE tblA (
    col1 INT, 
    col2 INT 
); 

Puede insertar información como esta:

INSERT INTO tblA VALUES ('value1', 'value2'); 

Si omite los nombres de columna y no lo hace Especifique los valores para todas las columnas, MySQL dará el error "El recuento de columnas no coincide con el recuento de valores en la fila" se producirá, ya que MySQL no sabe qué poner en las columnas que faltan. Con la estructura de la tabla anterior,

INSERT INTO tblA VALUES ('value1'); 

dará como resultado ese error.

En modo no estricto, MySQL insertará los valores predeterminados para los nombres de columna omitidos.

+0

No bastante - [Aquí] (http://dev.mysql.com/doc/refman/5.1/en/insert.html) puede encontrar que no necesita proporcionar datos para _every_column - puede permanecer vacío o automáticamente llenarse con el valor predeterminado de la columna. – weltschmerz

+0

@Charles, tiene toda la razón, pero traté de no dar demasiada información en mi respuesta. ;) –

+0

@Charles, solo en modo no estricto. Lo intenté y obtuve el error, incluso con los valores predeterminados establecidos. –

0

Usted ha perdido un valor para la columna de género (el último)

+0

Oh Dios ... Soy tan nuevo, también tiendo a cometer ese error :( – Will

0

Te faltan por completo el valor de género:

$sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender) 
VALUES('$firstname','$lastname','$email','$db_password','$day','$month','$year', 'gender goes here')") 
or die (mysql_error()); 
Cuestiones relacionadas