php连接.dbf数据库
最近接了个做CET4成绩查询的小件,涉及对.dbf数据库的处理,写下备忘。
PHP连接DBF文件程序清单:
$data="datasource/cet.dbf";//dbase数据库的地址和文件名
$db=dbase_open($data,0) or die ("Can not connect to the *.dbf file!");
for ($i = 1; $i <= $record_numbers; $i++) {
if($i>$record_numbers)break;
$row = dbase_get_record_with_names($db, $i);
if ($row['学号'])
{
$table=eregi("cet4",$row['语言级别'])?"cet4":"cet6";
echo trim("UPDATE $table SET source='".$row['总分']."'WHERE examid='".$row['准考证']."' AND name='".$row['姓名']."' AND time='".$time."' AND lisense='".$row['身份证件号']."';\n<br />");//生成SQL语句
}
}
添加数据:
$db=dbase_open("book1.dbf",2);
$result=dbase_add_record($db,$content);//$content为一数组,包含所有要添加的字段值按字段顺序排列
其他资料:
编程中我们有时候会遇到导入或导出数据,而对其格式有一定的要求,这里与大家探讨一下PHP如何对VFP中的数据表DBF格式文件进行交互。
1、检查是否开启php_dbase_open函数;
2、PHP打开DBF数据表:$tb_res=dbase_open($filename,mode); 返回一个数据库描述符
mode 1:0,只读,常用
mode 2:1,只写
mode 3:2,读写
3、DBF字段个数:dbase_numfields($tb_res);
4、读取DBF数据表记录:
$row=dbase_get_record($tb_res,id); 返回的是一个数字数组
$row=dbase_get_record_with_names($tb_res,id); 返回的是一个关联数组
常用命令:for($i=1;$i<=dbase_numrecords($tb_res);$i++){$row=dbase_get_record_with_names($tb_res,id);echo $row['field'];}
5、获取DBF数据表中记录条数:dbase_numrecords($tb_res);
6、关闭数据表:dbase_close($tb_res);
7、添加记录:dbase_add_record($tb_res,$arr_value);
8、删除记录:dbase_delete_record($tb_res,id);
9、创建DBF数据表:dbase_create(filename,$array);
$array由域名、类型、长度、精度组成的一个二维数组
类型:L(逻辑型)、M(备注型)、D(日期型)、N(数字型)、C(字符串型)
10、修改记录:dbase_replace_record(...);
11、获取DBF数据结构:dbase_get_header_info($tb_res); 返回的是一个数组
name、type、length、precision、format、offset
实例代码:
$tbname='123.dbf';
$user=array(
array('name','C',10),
array('age','N',3,0),
array('address','C',256),
array('birthday','D'),
array('sex','L'),
);
if(!dbase_create($tbname,$use)){
echo '新建文件失败!';
}
更多介绍请参见PHP官方文档:http://www.php.net/manual/zh/ref.dbase.php
评论