首先在mysql数据库中建立一个ac_haomaname表,表结构为:
id int //主键 自动增加
haoma char(11) //电话号码
name varchar(30); //姓名
数据表的编码为:utf8_general_ci;
要导入的文件是:lthaomaname.txt。
注意了:如果你的这个文件是从其它数据库里导出来的,你得新建一个文本文件,然后将此文件的内容用拷贝复制的方法复到你新建的那个文本文件中去,这样做的目的是为了你从别处导来的文本文件“不纯”,我就是因为这个原因,搞了2个小时,怎么导入,数据都是乱码,后来复制了一遍,做了一个新的文本文件,才解决,郁闷!
下面是导入到数据库的PHP代码,没有考虑导入有重复数据的问题,请你自行扩充这个功能。
又要注意的是编码问题,
这一句的编码是gb2312,那么在程序中就一定是mysql_query("set names gb2312");这样网页编码和导入数据的编码就一致了。mysql_query("set names gb2312")一定要在mysql_query($str);语句之前执行,意思是在插入数据之前就把编码改过来。
本程序思路:打开一个文本文件,当文件不结尾的时候,读一行,把这一行中用空格隔开的数据分别赋值给$m,$n,然后将$m,$n插入到数据表中相应的字段。require_once("searchconn.php")这一句是网页配置文件,是连接mysql数据库用的。完整程序如下:
无标题文档require_once("searchconn.php");//数据库配置文件
$file = fopen("lthaomaname.txt","r");//打开文件
$mydata=file("lthaomaname.txt");//把整个文件读入到一个数组中,一行一个元素
$w=count($mydata);
echo "共有记录:".$w."条
";
unset($mydata);//释放$mydata数组
$sql="delete from ac_haomaname"; //清空库中的ac_haomaname
mysql_query($sql);
$sql="alter table ac_haomaname auto_increment=1";//使表中的自动增量字段从1开始
mysql_query($sql);
while(! feof($file))//当文件不结束
{
$line=fgets($file);//读文本文件一行
list($m,$n)=explode(" ",$line);//将获取的文本文件中的一行,以空格进行分割后,然后分别赋值给$m和$n
$str="insert into ac_haomaname(haoma,name) values('".$m."','".$n."')";
echo $m." ".$n."
";
mysql_query("set names gb2312");//修改编码
mysql_query($str);
}
fclose($file);//文件关闭
mysql_close();//数据库关闭
echo "文本文件倒入到haomaname表ok!";
?>
导入的数据在使用phpmyadmin进行查看时,会出现姓名乱码的问题,这个时候你把表结构调出来,把字段的“整理”调整为gb2312_chinese_ci就可以了,意思是以gb2312编码进行显示,它就不会有乱码了。
介绍两个有用的sql语句:
1、查询表结构的SQL语句:
desc 表名
2、让自动增量字段重新从1计数的语句:
alter table 表名 auto_increment=1