2012-08-16 30 views
8

登録を作成していますが、私はフォームをMySQLデータベースに送信するためにJavaScriptを使用していません。何かが私のすべての情報を記入し、「登録」をクリックすると、「列数が行1の値と一致しません」というメッセージが返されます。PHP〜行数が行1の値と一致しません

私はこれがかなり混乱しているので、誰にも解決策がありますか?これは、コードに私のINSERTです

:そこにあなたのコードで

$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

を? – ChrisM

+2

'()'列に列挙されている値よりも多くのまたはより少ない値を持つ 'INSERT'文の結果でしょう。あなたのコードを投稿すると、私たちは見ています。 –

+1

これはあなたのphp123より多くのSQLに関連しています – Sablefoste

答えて

16

8つの列に7つの値を挿入しようとしています - あなたには性別の挿入がありません。正しいコードは次のようになり

$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()); 

ところで、あなたはすでにそれをやっていない場合、私は非常にそうようなクエリに渡す前に、最初の文字列をエスケープをお勧めします:

$firstname=mysql_real_escape_string($firstname) 

上記のすべての変数でこれを行う必要があります。 Hereあなたはエスケープ機能の詳細を見つけることができます。

+0

ああ神様....私はそんなに新しくて、私もその間違いをする傾向があります:( – Will

+0

大丈夫です、喜んで助けて歓迎します!あなたを助けてくれた答えを受け入れてください。左に – weltschmerz

+1

完了、それは多くの助けになりました。また、私はmysql_real_escape_stringを行っています;すべては今働いています – Will

1

、私はあなたが$性別を挿入することを忘れてご覧ください。

MySQLテーブルにデータを挿入するときは、どのデータがどのカラムに入るかを指定する必要があります。あなたはVALUES部分の前に列名を指定することで、次の操作を行います。

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

あなたがその情報を省略した場合、MySQLはすべての列を期待します:

CREATE TABLE tblA (
    col1 INT, 
    col2 INT 
); 

:あなたのテーブルはこのようであれば

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

このような情報を挿入することができます。すべての列に値を指定すると、MySQLは列に何を入れるべきかわからないので、「列数は行の値の数と一致しません」というエラーが発生します。上記のテーブル構造では、

INSERT INTO tblA VALUES ('value1'); 

となります。

非strictモードでは、省略されたカラム名にデフォルト値が挿入されます。

+0

ませんかなり - [ここ](http://dev.mysql.com/doc/refman/5.1/en/insert.html)あなたが_every_列のデータを提供する必要がないことを見つけることができます - それは空のまま、または自動的にしますか列のデフォルトでいっぱいにしてください。 – weltschmerz

+0

@Charles、あなたはまったく正しいですが、私は答えにあまり情報をあげようとしませんでした。 ;) –

+0

@Charles、厳密ではないモードでのみ。私はそれを試して、デフォルトを設定しても、エラーが発生しました。 –

0

あなたは、あなたが完全に男女値不足している男女の列(最後の)

+0

ああ神....私はまた、間違いをする傾向がある – Will

0

の値を見逃している:あなたは、あなたのPHPコードを投稿してくださいすることができ

$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()); 
関連する問題