0

コード:

for($i = 1; $i <= $arr['var']; $i++) {

  if($i == $arr['var']):

    $insert .= '('.$n_id.', 12)';

  else:

    $insert .= '('.$n_id.', 12),';

  endif;

}

$uz = mysql_query("INSERT INTO `cars`
                   (n_id, auto_id)
                   VALUES
                   '$insert'") or die(mysql_error());

SQL 構文エラーが発生するのはなぜですか? 私は何を間違っていますか?

4

4 に答える 4

1

INSERT ステートメントに文字列連結がありません:

$uz = mysql_query("INSERT INTO `cars`
                     (n_id, auto_id)
                   VALUES "
                    . $insert .") or die(mysql_error());

これは、タプル サポートの末尾のコンマにも問題がないことを前提としています。

于 2010-06-22T16:50:35.923 に答える
0
  • 展開されていないクエリは次のとおりです。

    INSERT INTO `cars` (n_id, auto_id) VALUES '$insert'
    

    次に、$insert展開すると、おそらく次のようになります。

    INSERT INTO `cars` (n_id, auto_id) VALUES '(1,12),(2,12),(3,12)';
    
  • 一重引用符は文字列を区切るため、データ リストを囲む一重引用符 ( ') は使用しないでください。

  • 代わりに、次のことが必要です。

    INSERT INTO `cars` (n_id, auto_id) VALUES (1,12),(2,12),(3,12);
    

    それを PHP に再度折りたたむと、次のようになります。

    INSERT INTO `cars` (n_id, auto_id) VALUES $insert
    

tl;dr: sを削除し'ます。

于 2011-11-07T16:19:19.557 に答える
-1

私の知る限り、mySQL で一重引用符 ($insert の周り) と混合した場合、バッククォート (車の周り) の使用は正しくありません。どちらかを選んでください - おそらく標準化のために一重引用符が推奨されます。

于 2010-06-22T16:52:13.500 に答える
-1

一般的なSQL管理では、次への挿入の例を示します。

INSERT INTO [table]
( [field1], [field2], [field3] ) VALUES
( '[value1.1]', '[value1.2]', '[value1.3]' ),
( '[value2.1]', '[value2.2]', '[value2.3]' ),
( '[value3.1]', '[value3.2]', '[value3.3]' ),
etc.

構文に問題がある可能性があります。プリントアウトをオススメします

"INSERT INTO `cars`
       (n_id, auto_id)
       VALUES
       '$insert'"

あなたが送っているものを見るために。

于 2010-06-22T16:52:54.687 に答える