2

誰かがこれでエラーを見つけることができるかどうか疑問に思っていました:

    $sqlinsert = "LOAD DATA LOCAL INFILE 
\'$target_path\' INTO TABLE 'db_usergroup' 
FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' ESCAPED BY \'\\\\\' 
LINES TERMINATED BY \'\\r\\n\'";

$target_path正確な名前は若干異なりますが、例は次のとおりです。

temp/24_09_12_16_57_27_invoice_example.csv

次のエラーが表示されます。

    An error occurred. The file could not be imported. 
Error with MySQL Query: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 
'\'temp/24_09_12_16_57_27_invoice_example.csv' INTO TABLE 
'db_usergroup' FIELDS T' at line 1

すべてのヘルプは大歓迎です。

4

2 に答える 2

0

ターゲット パスの引用符をエスケープするのはなぜですか? 私はそれが必要だとは思わない。

通常、 の後の最初の数文字を調べることで、エラーの内容を正確に知ることができますfor the right syntax to use near。これは、バックスラッシュに問題があることを示しているようです。

試す:

$sqlinsert = "LOAD DATA LOCAL INFILE '$target_path' INTO TABLE ...
于 2012-09-24T05:11:32.250 に答える
0

'db_usergroup'無効です。一'重引用符は、そのテーブル名を文字列に変換し、MySQL がバーフします。予約語でない限り、テーブル名またはフィールド名を引用/エスケープする必要はありません。そのために、バックティックを使用します。

LOAD DATA ... `db_usergroup` ...
              ^--          ^--

ファローアップ:

$sqlinsert = <<<EOL
LOAD DATA LOCAL INFILE '$target_path'
INTO TABLE db_usergroup
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\' 
LINES TERMINATED BY '\r\n'
EOL;
于 2012-09-24T05:23:32.020 に答える