みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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などで調べながら作業をしているのですが、他に参考になる
ようなサイトやサンプルコードがあれば教えてください。

宜しくお願い致します。

投稿日時 - 2008-02-28 15:25:18

QNo.3817563

すぐに回答ほしいです

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

>また、登録内容に¥があったり、途中で文字が抜けていたりするの
>ですが何か原因かわかりません。

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

投稿日時 - 2008-02-28 15:41:39

お礼

shimixさん

ありがとうございます。
CSVファイルはAccessからエクスポートしただけのものと、テキストエディタでSJIS
に変換したものとどちらでも同じ結果になりました。

magic_quotes_gpcについては、全てOFFにしてあります。
データの中身をみたところ、空欄のフィールドに「3」が入っていたり、
(これがcsvで吐き出したときに¥になっているようです)
フィールドが1つ増えて「0」が追加されていたりします。

mysql_real_escape_string()
調べてやってみます。ありがとうございます。

投稿日時 - 2008-02-28 18:18:08

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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

投稿日時 - 2008-02-28 20:57:32

お礼

daisuke_dmさん

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

投稿日時 - 2008-02-29 14:29:34

あなたにオススメの質問