读书人

[]真的很急[]CVS导入mysql乱码请小

发布时间: 2013-02-25 10:23:36 作者: rapoo

[]真的很急在线等[]CVS导入mysql乱码,请高手指点,我没分了只能给这些了,请谅解
本帖最后由 etracer 于 2013-02-19 10:04:06 编辑 我的CVS文件格式是UTF8,数据库格式是utf8_general_ci
以下是我的代码,请参考


<?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;
}
?>

cvs?mysql
[解决办法]
在insert最后一刻输出$data_values看下
另外,你数据库是utf8并不能万事大吉,表呢,字段呢
[解决办法]
你试试setlocale这个函数


setlocale(LC_ALL, 'en_US.UTF-8');


[解决办法]
mb_convert_encoding($data,'UTF-8','GBK');//解决CSV中文显示乱码

读书人网 >PHP

热点推荐