16

私は登録を作成しており、フォームをMySQLデータベースに送信するためにJavaScriptではなくPHPを使用しているため、すべてが正常に機能しており、構文エラーなどはありませんが、すべての情報を入力して[登録]をクリックすると、 「列数が行 1 の値数と一致しません」というメッセージを返します。

私はまだ14歳なので、これは私にとってかなり混乱しています.誰かが解決策を持っていますか?

これは私のINSERT INTOコードです:

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

4 に答える 4

24

7 つの値を 8 つの列に挿入しようとしています - 性別の挿入がありません。

正しいコードは次のようになります。

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

上記のすべての変数でこれを行う必要があります。ここでは、エスケープ機能について詳しく説明します。

于 2012-08-16T14:27:57.167 に答える
1

あなたのコードでは、$gender を挿入するのを忘れているようです。

データを 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');

そのエラーになります。

非厳密モードでは、MySQL は省略された列名にデフォルト値を挿入します。

于 2012-08-16T14:25:48.173 に答える
0

性別列の値がありません (最後の列)

于 2012-08-16T14:28:47.327 に答える
-1

性別の値が完全に欠落しています:

$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());
于 2012-08-16T14:31:54.193 に答える