[]真的很急在线等[]CVS导入mysql乱码,请高手指点,我没分了只能给这些了,请谅解
本帖最后由 etracer 于 2013-02-19 10:04:06 编辑 我的CVS文件格式是UTF8,数据库格式是utf8_general_ci
以下是我的代码,请参考
cvs?mysql
<?php
/**
* @author: パンこう
* @Modify:
*/
//==========================================
//共通設定
//==========================================
//Smarty.classの呼び出し
require_once('../libs/MySmarty.class.php');
//新しく作成したMySmartyインスタンスの生成
$smarty = new MySmarty();
if(!include_once("postdbonload.php"));
//データベース接続
$pdo = new PDO("mysql:host=$MYSQL_HOST; dbname=$MYSQL_DATABASE","$MYSQL_USER", "$MYSQL_PASSWORD");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->query('SET NAMES utf8');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
$pdo->query('SET CHARACTER SET UTF8');
$pdo->query('SET CHARACTER_SET_RESULTS=UTF8');
$action = $_GET['action'];
if ($action == 'import') { //
$filename = $_FILES['file']['tmp_name'];
if (empty ($filename)) {
echo 'CSVファイルを選んでください';
exit;
}
$handle = fopen($filename, 'r');
$result = input_csv($handle); //
$len_result = count($result);
if($len_result==0){
echo 'NOデータ';
exit;
}
for ($i = 1; $i < $len_result; $i++) { //
$m_personalid = $result[$i][0];//個人コード
$m_membername =$result[$i][1];//乗務社員名
$m_katakana = $result[$i][2];//フリガナ
$gname= trim($result[$i][3]);//支店
$group2id = "select * from hy_groups where g_groupname='$gname'";
$rs = $pdo->query($group2id);
$rs->setFetchMode(PDO::FETCH_BOTH);
$result_arr = $rs->fetch();
$m_groupid=$result_arr['g_id'];
$m_driver_tel =$result[$i][4];//アプリ電話
$m_driver_tel =$result[$i][5];//携帯番号
$m_driver_tel =$result[$i][6];//電話番号(自宅)
$m_driver_tel =$result[$i][7];//営業担当
$m_pro = $result[$i][20];//備考
//-----------------------
$c_clientname = $result[$i][8];//委託先(会社名フリガナ)
$c_clienttel = $result[$i][9];//委託先電話番号
$c_clientplace = $result[$i][10];//委託先住所
$c_traveler = $result[$i][11];//ご乗車人名
$c_traveleradds = $result[$i][12];//ご乗車人様自宅住所
$c_travelermob = $result[$i][13];//ご乗車人様電話番号(携帯)
$c_travelertel = $result[$i][14];//ご乗車人様電話番号(自宅)
$c_secretary = $result[$i][15];//担当秘書名
$c_secretarytel = $result[$i][16];//担当秘書電話番号(加入/携帯)
$c_carinfo = $result[$i][17];//車両情報
$c_goodpart = $result[$i][18];//得意先配車室情報
$c_emptycol = $result[$i][19];//空欄
//------------------------
$data_values = "('$m_personalid','$m_membername','$m_katakana','$m_groupid','$m_driverkmtel ','$m_driver_tel','$m_driverhometel','$m_salesstaff','$m_pro')";
$querysql = "insert into hy_members (m_personalid,m_membername,m_katakana,m_groupid,m_driverkmtel,m_driver_tel,m_driverhometel,m_salesstaff,m_pro) values $data_values";//
$query=$pdo->exec($querysql);
if($query){
}else{
echo '<script language="javascript">window.alert("import failed");window.location="Crew_Send.php";;</script>';
//header("location:Crew_Send.php");
}
$m_cid = $pdo->lastInsertId();
$datac_values .= "('$c_memberid','$c_clientname','$c_clienttel','$c_clientplace','$c_traveler','$c_traveleradds','$c_travelermob','$c_travelertel','$c_secretary','$c_secretarytel','$c_carinfo','$c_goodpart','$c_emptycol')";
$querysqlc = "insert into hy_clientinfo (c_memberid,c_clientname,c_clienttel,c_clientplace,c_traveler,c_traveleradds,c_travelermob,c_travelertel,c_secretary,c_secretarytel,c_carinfo,c_goodpart,c_emptycol) values $datac_values";//
echo "$querysqlc";
$queryc=$pdo->exec($querysqlc);
if($queryc){
echo '<script language="javascript">window.alert("import success");window.location="Crew_Send.php";</script>';
//header("location:index.php");
}else{
echo '<script language="javascript">window.alert("import failed");window.location="Crew_Send.php";;</script>';
//header("location:Crew_Send.php");
}
}
//$data_values = substr($data_values,0,-1);
//$datac_values = substr($datac_values,0,-1);
fclose($handle); //
} elseif ($action=='export') { //exportCSV
$exportsql = "select * from hy_members";
$rs = $pdo->query($exportsql);
$result_arr = $rs->fetchAll();
$exportsqlc = "select * from hy_members";
$rsc = $pdo->query($exportsqlc);
$rsc->setFetchMode(PDO::FETCH_ASSOC);
$result_arrc = $rsc->fetchAll();
$str = "個人コード,乗務社員名,フリガナ,支店,アプリ電話,携帯番号,電話番号(自宅),営業担当,委託先(会社名フリガナ),委託先電話番号,委託先住所,ご乗車人名,ご乗車人様自宅住所,ご乗車人様電話番号(携帯),ご乗車人様電話番号(自宅),担当秘書名,担当秘書電話番号(加入/携帯),車両情報,得意先配車室情報,空欄,備考"."\n";
// $str = "personalid,name,katakana,groupname,m_driver_tel,m_pro"."\n";
for($i=0;$i<count($result_arr);$i++){
$m_personalid = $result_arr[$i]['m_personalid'];
$m_membername =$result_arr[$i]['m_membername'];
$m_katakana = $result_arr[$i]['m_katakana'];
$m_groupid = $result_arr[$i]['m_groupid'];
$id2name = "select * from hy_groups where g_id=$m_groupid";
$rs = $pdo->query($id2name);
$rs->setFetchMode(PDO::FETCH_BOTH);
$resultid = $rs->fetch();
$g_groupname=$resultid['g_groupname'];
//-------
$m_driverkmtel=$resultid['m_driverkmtel'];
//-------
$m_driver_tel =$result_arr[$i]['m_driver_tel'];
$m_driverhometel =$result_arr[$i]['m_driverhometel'];
$m_salesstaff =$result_arr[$i]['m_salesstaff'];
//-------
for($j=0;$j<count($result_arrc);$j++){
if($result_arr[$i]['m_id']==$result_arrc[$j]['c_memberid']){
$c_traveler=$result_arrc[$j]['c_traveler'];
$c_traveleradds=$result_arrc[$j]['c_traveleradds'];
$c_travelermob=$result_arrc[$j]['c_travelermob'];
$c_travelertel=$result_arrc[$j]['c_travelertel'];
$c_secretary=$result_arrc[$j]['c_secretary'];
$c_secretarytel=$result_arrc[$j]['c_secretarytel'];
$c_carinfo =$result_arrc[$j]['c_carinfo'];
$c_goodpart=$result_arrc[$j]['c_goodpart'];
$c_emptycol=$result_arrc[$j]['c_emptycol'];
}else{
$c_traveler="内容なし";
$c_traveleradds="内容なし";
$c_travelermob="内容なし";
$c_travelertel="内容なし";
$c_secretary="内容なし";
$c_secretarytel="内容なし";
$c_carinfo ="内容なし";
$c_goodpart="内容なし";
$c_emptycol="内容なし";
}
}
//-------
$m_pro = $result_arr[$i]['m_pro'];
$m_pro=str_replace("\n","",$m_pro);
$m_pro=str_replace("\r","",$m_pro);
$m_pro=str_replace("\r\n","",$m_pro);
$str .= $m_personalid.",".$m_membername.",".$m_katakana.",".$g_groupname.",".$m_driverkmtel.",".m_driverhometel.",".m_salesstaff.",".$m_driver_tel.",";
$str .=$c_traveler.",".$c_traveleradds.",".$c_travelermob.",".$c_travelertel.",".$c_secretary.",".$c_secretarytel.",".$c_carinfo.",".$c_goodpart.",".$c_emptycol.",".$m_pro."\n";
}
$filename = date('Ymd').'.csv';
export_csv($filename,$str);
}
function input_csv($handle) {
$out = array ();
$n = 0;
while ($data = fgetcsv($handle, 10000)) {
$num = count($data);
for ($i = 0; $i < $num; $i++) {
$out[$n][$i] = $data[$i];
}
$n++;
}
return $out;
}
function export_csv($filename,$data) {
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo chr(239).chr(187).chr(191);
echo $data;
}
?>
setlocale(LC_ALL, 'en_US.UTF-8');