首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

[]真的很急[]CVS导入mysql乱码,请,小弟我没分了只能给这些了,请谅解

2013-02-25 
[]真的很急在线等[]CVS导入mysql乱码,请高手指点,我没分了只能给这些了,请谅解本帖最后由 etracer 于 2013

[]真的很急在线等[]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中文显示乱码

热点排行