php讀取csv文件,在windows上出現(xiàn)中文讀取不到的情況,本人立馬想到一個函數(shù)mb_convert_encoding();作如下設(shè)置 $str = mb_convert_encoding($str, "UTF-8", "GBK");然后就可以了。當(dāng)然你也可以用iconv();作如下設(shè)置iconv(‘GBK’,”UTF-8//TRANSLIT//IGNORE”,$str);這兩個函數(shù)來解決在windows上面發(fā)生亂碼的問題。

創(chuàng)新互聯(lián)主營海南州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,海南州h5小程序設(shè)計(jì)搭建,海南州網(wǎng)站營銷推廣歡迎海南州等地區(qū)企業(yè)咨詢
我用的代碼是:
?
//連接數(shù)據(jù)庫文件
$connect=mysql_connect("localhost","admin","admin") or die("鏈接數(shù)據(jù)庫失敗!");
//連接數(shù)據(jù)庫(test)
mysql_select_db("testcg",$connect) or die (mysql_error());
$temp=file("test.csv");//連接EXCEL文件,格式為了.csv
for ($i=0;$i count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通過循環(huán)得到EXCEL文件中每行記錄的值
//將EXCEL文件中每行記錄的值插入到數(shù)據(jù)庫中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());
if (!mysql_error());
{
echo " 成功導(dǎo)入數(shù)據(jù)!";
}
echo $string[4]."\n";
unset($string);
}
?
--------------------------------------------------------------------------------
phpexcel或者pear的一個組件 ,國內(nèi)有一個excelclass的插件
都是用來處理excel的,前2個功能都比較強(qiáng)大,對編碼的支持也都不錯,推薦使用pear的那個,名字好像叫spreadsheet reader
phpexcel比較費(fèi)資源,不過并不是所有的excel都能讀取
樓主可以到這里去看看 pear.php.net
--------------------------------------------------------------------------------
頂樓上的回答~~順便接個分!嘿嘿
--------------------------------------------------------------------------------
AdO直接上傳
注意有些字符mysql或ADO可能不支持
--------------------------------------------------------------------------------
首先確認(rèn)你的數(shù)據(jù)庫是什么編碼的,以utf-8為例,
你首先打開excel 文件,然后保存,選擇為另存為.csv文件。
然后用文本編輯器打開.csv文件,另存為utf-8的csv
然后你寫php 可以使用php 的getcsv 打開(這樣確保你有的字段中含有,而導(dǎo)致解析錯誤),然后把解析的結(jié)果導(dǎo)入到數(shù)據(jù)庫中。
然后完了。
('". NOW()."',' NOW() 比如要放在 引號里,他是mysql的函數(shù),你如果放在引號外面,php就認(rèn)為 NOW() 是一個 php 的函數(shù),而實(shí)際上,php 沒有這個函數(shù),你自己又沒有定義這么一個函數(shù),當(dāng)然會提示 Call to undefined function NOW() (意思就是未定義的函數(shù))
?php?//導(dǎo)入CSV表格:CSV轉(zhuǎn)數(shù)組?
$fp?=?fopen($_FILES['myfile']['tmp_name'],?'r');?
while?(?($row?=?fgetcsv($fp))?!==?FALSE?)?{?//從文件指針中讀入一行并解析CSV?
$arr[]?=?$row;?}?fclose($fp);?//開啟事務(wù),循環(huán)插入?
$link?=?mysqli_connect("127.0.0.1",?"root",?"root",?"zwxiaomi");?
if?(!$link){echo"scriptalert('數(shù)據(jù)庫連接失敗!')/script";}?
$link-query("SET?NAMES?UTF8");
foreach($arr?as?$row){?
$danhao=substr($row[2],1);
$sql="INSERT?INTO?zaitugongdan?(FirstName,?LastName,?danhao)?
VALUES?('".$row[0]."','".$row[1]."','".$danhao."')";?
$link-query($sql);?
}
?
在代碼中去掉這個符號不就可以了
這個跟fputcsv無關(guān),而主要的關(guān)鍵在于你打開文件的模式,你需要使用 a 或是 a+ 模式打開文件。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
$fp = fopen('file.csv', 'a+');
foreach($stu as $data);
{
fputcsv($fp,$data); //每次寫入一組數(shù)據(jù)到csv文件中的一行
}
思路:
讀取csv文件,每讀取一行數(shù)據(jù),就插入數(shù)據(jù)庫
示例
文件夾結(jié)構(gòu)
/
file.csv????//csv大文件,這里只模擬三行數(shù)據(jù),不考慮運(yùn)行效率(PS:csv文件格式很簡單,文件一般較小,解析很快,運(yùn)行效率的瓶頸主要在寫入數(shù)據(jù)庫操作)
index.php????//php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
*?讀取csv文件,每讀取一行數(shù)據(jù),就插入數(shù)據(jù)庫
*/
//獲取數(shù)據(jù)庫實(shí)例
$dsn?=?'mysql:dbname=test;host=127.0.0.1';
$user?=?'root';
$password?=?'';
try?{
$db?=?new?PDO($dsn,?$user,?$password);
}?catch?(PDOException?$e)?{
echo?'Connection?failed:?'?.?$e-getMessage();
}
//讀取file.csv文件
if?(($handle?=?fopen("file.csv",?"r"))?!==?FALSE)?{
while?(($row?=?fgetcsv($handle,?1000,?","))?!==?FALSE)?{
//寫入數(shù)據(jù)庫
$sth?=?$db-prepare('insert?into?test?set?name=:name,age=:age');
$sth-bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth-bindParam(':age',$row[1],PDO::PARAM_INT);
$sth-execute();
}
fclose($handle);
}
數(shù)據(jù)表
CREATE?TABLE?`test`?(
`id`?INT(10)?UNSIGNED?NOT?NULL?AUTO_INCREMENT,
`name`?VARCHAR(255)?NULL?DEFAULT?''?COLLATE?'utf8mb4_bin',
`age`?INT(10)?NULL?DEFAULT?'0',
PRIMARY?KEY?(`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
運(yùn)行結(jié)束后,數(shù)據(jù)庫中會插入csv中的三行數(shù)據(jù)
網(wǎng)站題目:php導(dǎo)入csv數(shù)據(jù),php生成csv文件
網(wǎng)頁URL:http://chinadenli.net/article10/dsehhgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站設(shè)計(jì)公司、建站公司、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)