0

を使用して、select ステートメントの結果を .csv ファイルに書き込もうとしていますINTO OUTFILE

私は今それを数時間いじっていて、ここで他の多くの関連する質問を読みました。

何らかの理由で、クエリを実行しても何も起こりません。ページにはエラーも何も表示されず、ファイルは作成されていません。

他の誰かがこの問題を抱えたことがありますか?私の SQL に問題があるかどうか誰かに教えてもらえますか?

$customers=dbqueryintoarray('
SELECT customer_contacts.Title, customer_contacts.FirstName, 
       customer_contacts.Surname, customer_contacts.Email, 
       customers.LanguageID, customers.DeliveryCountryID 
INTO OUTFILE \'z:/jobs.csv\' 
FIELDS TERMINATED BY \',\' 
OPTIONALLY ENCLOSED BY \'"\' 
LINES TERMINATED BY \'\n\' 
FROM jobs 
JOIN customer_contacts ON jobs.ContactID = customer_contacts.ContactID 
JOIN customers ON jobs.CustomerID = customers.CustomerID 
JOIN equipment ON jobs.EquipmentID = equipment.EquipmentID 
JOIN branches ON jobs.BranchID = branches.BranchID 
WHERE BranchName = "'.$location.'" AND ModelNumber LIKE "%6ES5%"
');

確認しましたが、権限があります。利用した

または死にます(mysql_error())

ただし、これによりエラーは発生しません。ページからそのポイント以降のすべてが削除されるだけです。私は本当に立ち往生しています

4

3 に答える 3

0

これを試して、メイン クエリをダブル クォータで囲みます。

$customers=dbqueryintoarray("
SELECT customer_contacts.Title, customer_contacts.FirstName, customer_contacts.Surname, 
customer_contacts.Email, customers.LanguageID, customers.DeliveryCountryID 
INTO OUTFILE 'z:\\jobs.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
FROM jobs 
JOIN customer_contacts ON jobs.ContactID = customer_contacts.ContactID 
JOIN customers ON jobs.CustomerID = customers.CustomerID 
JOIN equipment ON jobs.EquipmentID = equipment.EquipmentID 
JOIN branches ON jobs.BranchID = branches.BranchID 
WHERE BranchName = '$location' AND ModelNumber LIKE '%6ES5%'
");
于 2013-03-28T15:25:21.617 に答える
0

ファイル パスの引用符をエスケープしないでください。

... INTO OUTFILE 'z:\jobs.csv'

それらをエスケープすると、MySQL がそのファイル名を文字列として認識できなくなります。構文エラーとして表示されます。例:

mysql> select '1' into outfile \'/tmp/z.txt\';
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\''.
ERROR 1064 (42000): 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 '\'/tmp/z.txt\'' at line 1

エラーが表示されないからといって、何の意味もありません。mysql でエラーを確認する必要があります。たとえば、次のようになります。

$result = mysql_query($sql) or die(mysql_error());
                           ^^^^^^^^^^^^^^^^^^^^^^
于 2013-03-28T15:24:28.297 に答える
0

「C:\\jobs.csv」はいかがですか?Windowsでこれを使用した経験はありませんが、phpのように\を/に置き換えないと思います。

于 2013-03-28T15:23:47.677 に答える