[PHP-users 20666]CSVファイルのデータ
Yoshiyuki Nonaka
nonaka @ bananas-dive.com
2004年 3月 6日 (土) 17:18:31 JST
はじめまして
野中と申します。
ダウンロードした郵便番号データ(CSV形式/SHIFT JIS)をテーブルに挿入しようとしてい
るのですが、どうしてもデータがおかしくなってしまうので、悩んでいます。
皆さんのアドバイスを頂けたらとメールしました。
よろしくお願いいたします。
【環境】
OS :RedHat9(2.4.20-30.9smp)
PHP :4.3.4
Apache :2.0.48
PostgreSQL :7.4.1
例えば、下記のデータを
----------------------------------
[0] [1] [2] [3] [4]
01393,"04801","0480135","ホッカイドウ","スッツグンクロマツナイチョウ",
[5] [6] [7] [8] [9〜14]
"カクジュウ","北海道","寿都郡黒松内町","角十",0,0,0,0,0,0
----------------------------------
↓
----------------------------------
[0] [1] [2] [3]
048-0135 北海道 寿都郡黒松内町 角十
----------------------------------
とゆうふうにしたいのですが、54件分だけデータが
[2][6][7][8][9〜14][0]の並び方になってデータが挿入されてしまいます。
↓
----------------------------------
048-0135 | 北海道 | 寿都郡黒松内町 | 角十",0,0,0,0,0,001393,
----------------------------------
何故、このようになるのか原因を知りたいのですが、原因の調べ方等を
お教えいただけないでしょうか。
宜しくお願いいたします。
======================================================
while ($a = fgetcsv ($fp, 10000,",")) {
for ($k=0; $k<count($a); ++$k){
if(($k > 1)&&($k!==3)&&($k!==4)&&($k!==5)&&($k < 9)){
if($k===2){
$sql="INSERT INTO zipaddrs VALUES('";
$sql.=mb_convert_encoding(sprintf("%03d-%04d", substr($a[$k],0,3),
substr($a[$k],3)),"EUC-JP","SJIS-win")."',";
}elseif($k===7){
$sql.="'".mb_strimwidth(mb_convert_encoding($a[$k],"EUC-JP","SJIS-
win"),0,20)."',";
}elseif($k===8){
$sql.="'".mb_convert_encoding($a[$k],"EUC-JP","SJIS-win")."')";
++$count;
$result=$con->sqlexec($sql);
}else{
$sql.="'".mb_convert_encoding($a[$k],"EUC-JP","SJIS-win")."',";
}
}
}
}
PHP-users メーリングリストの案内