引用 | 編輯
surro
2004-11-16 10:53 |
樓主
▼ |
||
x0
我在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/php_big5/function.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 "; 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); } x0
|