• ベストアンサー

PHP⇒MySQL CSVファイルのアップロードについて

こんにちは。 先日も質問させていただいたのですが、宜しくお願い致します。 8万行ほどあるCSVをフォームから送信してDBに登録をおこなって いるのですが、フォームから登録をおこなうと何件か登録がされ ません。 また、登録内容に¥があったり、途中で文字が抜けていたりするの ですが何か原因かわかりません。 エンコードは全てsjisに設定し、EUC⇒sjisに変換する式も入れています。 コマンドプロンプトから「load data」で登録すると全て正常に登録されます。 また、前回質問させていただいたときに、処理を分けたほうが良いのでは? とアドバイスをいただいたため、 form.php⇒insert.php⇒test.php という流れにして insert.phpには DBの接続文(load文)とheader("Location:test.php"); を記述しています。 実行させるとtest.phpが表示さるのですが、SQL文は実行されておらず、 DBに登録されていません。 参考書やHPなどで調べながら作業をしているのですが、他に参考になる ようなサイトやサンプルコードがあれば教えてください。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>また、登録内容に¥があったり、途中で文字が抜けていたりするの >ですが何か原因かわかりません。 CSVファイルもSJISですか?loadであれば問題ないですが、SQL文を組み立てる場合にはmysql_real_escape_string()を使って「問題のないSQL文」にする必要があります。   http://www.php.net/manual/ja/function.mysql-real-escape-string.php 文字コードがSJISなら5c問題もありますしね。 あ、フォームからの受け取りならmagic_quotes_gpcがどうなっているかも確認しておた方がいいですね(「\」が付くということなので・・)。   http://www.php.net/manual/ja/ref.info.php#ini.magic-quotes-gpc

k1227_001
質問者

お礼

shimixさん ありがとうございます。 CSVファイルはAccessからエクスポートしただけのものと、テキストエディタでSJIS に変換したものとどちらでも同じ結果になりました。 magic_quotes_gpcについては、全てOFFにしてあります。 データの中身をみたところ、空欄のフィールドに「3」が入っていたり、 (これがcsvで吐き出したときに¥になっているようです) フィールドが1つ増えて「0」が追加されていたりします。 mysql_real_escape_string() 調べてやってみます。ありがとうございます。

その他の回答 (1)

回答No.2

PHPを使うなら、 このページを一度はひととおりみたほうがいいと思います。 ご質問に関連するような文字コード関係の話題も一通り取り上げられています。 http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

参考URL:
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html
k1227_001
質問者

お礼

daisuke_dmさん ありがとうございます。 教えていただいたURLを参考にしてみます。

関連するQ&A