php连接读写操作.dbf数据库

 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注