我在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
";
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);
}