-1

2 つのテーブルにデータを挿入したいこのクエリがあります。

最初に挿入されますが、2番目には挿入されません。なぜですか?

$result1 = mysql_query("INSERT INTO entries (UserID, FirstName, LastName, EmailAddress, TelephoneNumber, Image, Status) VALUES ('NULL', '$FirstName', '$LastName', '$EmailAddress', '$TelephoneNumber', '$ran2$ext', '0')") ;

$newid = mysql_insert_id($result1);

$result2 = mysql_query("INSERT INTO voting (id, EntryID, item, vote, nvotes) VALUES ('NULL', $newid, 'vt_img353', '0', '0')") ;
4

3 に答える 3

1

null を挿入しようとしている場合は、引用符を使用しないでください。

INSERT INTO voting 
    (id, EntryID, item, vote, nvotes) 
    VALUES (NULL, $newid, 'vt_img353', '0', '0')

juergen dが正しく指摘しているように、列を挿入したくない場合はスキップできますが、これは最初に挿入する列に名前を付けた場合にのみ機能します。以下では動作しません:

INSERT INTO voting 
    VALUES (NULL, $newid, 'vt_img353', '0', '0')
于 2012-09-15T10:43:50.767 に答える
1
$result2 = mysql_query("INSERT INTO voting (EntryID, item, vote, nvotes) VALUES ($newid, 'vt_img353', '0', '0')") ;

列を設定したくない場合は、そのままにしておくことができます。あなたのid列はおそらく自動インクリメント列です。insert ステートメントからそのままにしておくと、自動的に入力されます。

明示的に設定したい場合はNULL、引用符を残してください。それ以外の場合は、列を文字列に設定します NULL

于 2012-09-15T10:44:50.430 に答える
0

それ自体は答えではありませんが、それでも非常に便利です。IDE とこのようなフォーラムの両方で、コードを読みやすくするために、コードをインデントできることに注意してください。これを試して:

$result1 = mysql_query("
    INSERT INTO entries (
        UserID, FirstName, LastName,
        EmailAddress, TelephoneNumber, Image,
        Status
    )
    VALUES (
        NULL, '$FirstName', '$LastName',
        '$EmailAddress', '$TelephoneNumber', '$ran2$ext',
        '0'
    )
");

これにより、妥当な行の長さ (私は 120 文字を使用) を維持し、画面の右側に潜むバグを減らすことができます。

于 2012-09-15T11:06:10.370 に答える