假设数据库里面有个表user,字段:id,name,sex,country。
我要实现的是:
第一,正向操作:
从user表中逐行读取内容存储到“abc.txt”文件中
第二,反向操作:
假定有一个"abc.txt"文件,内容和格式如下:
1 Zhangsan male China
2 Lisi male China
3 Jim male USA
.....
求这两种操作的php代码。非常感谢!!
这样吧,我把问题简化一下:数据库读取和插入就不用了。只需要:1。写入数据到abc.txt文件,2。从abc.txt中读取数据 这两种操作的代码
先赞一个,辛苦了。
请问:
第一种里面,为啥要竖线隔开字段
第二种里面,这种读取文件数据的方法过于复杂,而且如果数据之间的空格大于一个的话还失效(比如说Zhangsan 与 male之间有多个空格的话),能不能整行读取呢?或者其他能够考虑多个空格的方法呢?
我使用的codeigniter,第一种生成的文件abc.txt会在什么位置呢?(这个问题你可以不回答,如果没用过codeigniter的话,呵呵)
为了隔开各字段的数据
空格大于一个也可以的。你试一下
CI好像听说是单入口框架,应该是CI的index.php所在的位置,也就是根目录下面生产abc.txt吧,因为所有的方法都是由index.php来执行的。不知道对不对,你试下。
第一个问题里面,我按你说的写入文件之后,发现每行数据之间没有换行,所有数据都连在一起。也就是说nl2br($data)没起作用。
第二个问题,如果有多个空格的话不行,我试过。
先赞一个,辛苦了。
请问第二个,你说用file函数,能具体点么?关键是读出每行之后,如何从每行的字符串中得到单个的数值。这些数值之间是用一个或多个空格隔开的
谢谢了
遍历数组数组 $lines 的每个元素(相当于 "abc.txt" 文件中的一行),每次你都得到一个字符串 $L (用“\t”分割的一组字段构成的),你用 $r = explode("\t", $L); 语句就得到一个数组 $r ,这个数组 $r 的每个元素就是用“\t”分割的一个部分——也就是把数组库中的一条记录的各个字段对应到了数组 $r的一个元素上。
另外,你把一个表的内容转换成 txt 文件的时候 用空格来做字段间分割是不科学的,比如,库表中的“姓名”这个字段,有人是单字名的,录入员可能会把他的姓和名之间插入一个空格。当你要把 txt 文件再转换成数据库表的时候,“姓名”中间的空格就会造成混乱。再者,MySQL 还有一个命令,不需要编程,只用一个命令就可以把整个 txt 文件存进一个库表里去,这个命令要求就是:txt文件的每一行对应于数据库的一条记录、在同一行内不同字段值之间用"\t"隔开。
如果你一定要“用一个或多个空格隔开”,就把我上面程序中的“\t”换成“一个或多个空格”就可以了。
第一个问题,我按照你说的做了,发现写的文件abc.txt里面的数据是连在一起的,没有换行,fwrite($handle, $L."\r\n"); 貌似."\r\n"不管用
追答看到你的追问后我在我自己的电脑上试了
那段程序一点问题都没有
因为我用的是 Linux, "\r\n" 换成 "\n"也一样