2

したがって、MySQLに3つの列を持つデータベース設定があります。最初の列は「idnum」で、ユーザーのID番号を自動的にインクリメントします。2番目と3番目は、それぞれ名前と名前です。私の問題は、PHPファイルのクエリ文字列を介して名前をDBに送信しようとすると、いくつかの異なるエラーが返されることです...

クエリを送信すると:

$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')";
$result = $db->query($sql);

このエラーが返されます:「整数値が正しくありません:行1の列'idnum'の'NULL'。」列1はINTタイプであるため。

しかし、私がこのクエリを送信すると:

$sql = "insert into namesdb values(".NULL.", 'firstname', 'lastname')";
$result = $db->query($sql);

構文エラーが返されます...

私がここで何を間違っているのかについて何か考えはありますか?

助けてくれてありがとう!

4

4 に答える 4

4

そのはず:

$sql = "insert into namesdb values(NULL, 'firstname', 'lastname')";
$result = $db->query($sql);

'NULL'の文字列です"NULL"

別のオプション(私が使用するオプション)は、列を明示的にリストすることです。

INSERT INTO namesdb (firstname, lastname) VALUES ('firstname', 'lastname')

将来性があり、何が起こっているのかを簡単に確認できるため、列を一覧表示することをお勧めします。将来、列が再配置、追加、または削除されるかどうかを想像してみてください。たとえば、6番目の名前のないパラメータをどこでも削除する必要がある場合、クエリを突然修正するのは非常に困難です。

于 2012-06-05T06:23:18.480 に答える
0

挿入するフィールド名を指定し、idフィールドを指定しない方がよい

お気に入り

       insert into namesdb(firstname,lastname) values('firstname', 'lastname')

IDフィールドが自動的にインクリメントされます

于 2012-06-05T06:24:14.140 に答える
0

この方法でクエリを記述して、その問題を回避できます。

 $sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'";
于 2012-06-05T06:25:36.343 に答える
0
$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')";

上記のクエリでは、「NULL」は文字列オブジェクトであり、列は整数であるため、エラーが発生します。

$sql = "insert into namesdb values(".NULL.", 'firstname', 'lastname')";

このクエリでは、php NULL値を送信しているため、最終的なクエリは次のようになります。

"insert into namesdb values(, 'firstname', 'lastname')";

したがって、それは無効です。

正しい挿入方法は次のようになります

$sql = "insert into namesdb values(NULL, 'firstname', 'lastname')";

またはこのように

$sql = "insert into namesdb values('firstname', 'lastname')";

上記のクエリが機能する理由は、自動インクリメントのためです。

于 2012-06-05T06:25:48.400 に答える