我在windows做的csv檔,可以在excel被打開但未必能在phpmyadmin中匯入
我不知為何mysql對於csv檔的設定到底是什麼
在其他地方可用的csv,到了mysql未必可以,縱使你做了設定
於是就用php寫了一個匯入的程式
fgetcsv 這個函數是用來讀取csv檔的
他的中文說明如下
說明
array fgetcsv ( int fp, int length [, string delimiter [, string enclosure]])
和 fgets() 類似,只除了 fgetcsv() 解析讀入的行並找出 CSV 格式的字段然後傳回一個包含這些字段的陣列。字段分隔符是逗號,或者用可選的第三個參數另外指定。字段用雙引號包圍,或者用可選的第四個參數另外指定。Delimiter 和 enclosure 不能是 null 並且只有第一個字元有效。
fp 必須是通過 fopen(),popen() 或者 fsockopen() 成功打開的有效文件指針。
length 必須大於 CVS 文件中長度最大的行(以便於處理行結束字元)。
fgetcsv() 出錯時傳回 FALSE,包括碰到文件結束時。
註: CSV 文件中的空行將被傳回為一個包含有單個 NULL 字段的陣列,不會被當成錯誤。
enclosure 是 PHP 4.3.0 新加的。
以下範例是參考中文說明修改而來
原始程式碼請參考
http://www.php5.idv.tw/documents/p...n.fgetcsv.html這段程式碼增加了對資料表的新增動作
"
$sql="INSERT INTO `mpwd` ( `NAME` , `CUNO` , `SERIAL` , `MPWD` )
VALUES ('$temp[0]','$temp[1]','$temp[2]','$temp[3]')";
"
我一次讓他讀一個row,用","分隔,放入$temp陣列中
陣列中的數值是代表他在資料表中的第幾欄
mysql_connect("localhost","abc","glicd24d") or die("連線失敗請洽系統管理員");
mysql_select_db("test");
$dbname="abc.csv";
if ( !$fp = fopen($dbname,"r") ) {
echo "Cannot open $dbname\n";
exit;
}else{
$size = filesize($dbname)+1;
$row=0;
while($temp=fgetcsv($fp,$size,",")){
if ($row>0){
$sql="INSERT INTO `mpwd` ( `NAME` , `CUNO` , `SERIAL` , `MPWD` )
VALUES ('$temp[0]','$temp[1]','$temp[2]','$temp[3]')";
$result=mysql_query($sql);
echo mysql_error();
}
$row=$row+1;
}
fclose($fp);
}