热搜:NVER node 开发 php

php 读dbf,但是没有同名的cdx文件

2024-09-18 11:20:01
php 读dbf,但是没有同名的cdx文件

php dbf cdx

PHP读取文件夹下dbf文件,如果与其同名的cdx文件存在的话,读取没有问题,
但是如果只有独立的dbf文件,通过PHP读取,报错如下。。

<?php
$add='c://BatMan//Daten//ladertyp.DBF';
$e="Driver={Microsoft Visual FoxPro Driver};SourceType=DBf;SourceDB=".$add.";";
$odbc=odbc_connect($e,'',''); 
 
echo $add;
$query = "select * from  ".$add.";";

$result_id = odbc_do($odbc, $query);
odbc_result_all($result_id, "border=1 width=50%");
odbc_close($odbc);
?> 

报错如下。。
c://BatMan//Daten//ladertyp.DBF
Warning: odbc_do(): SQL error: [Microsoft][ODBC Visual FoxPro Driver]Not a table., SQL state S0002 in SQLExecDirect in C:\xampp\htdocs\dbf.php on line 9

Warning: odbc_result_all() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\dbf.php on line 10

请问下。。什么原因呢?又该如何解决呢??

回复讨论(解决方案)

不好意思,刚刚测试了另外一个文件,只有DBF文件,但是没有cdx文件,用同样的指令,可以打开。。

估计问题不是出在cdx文件下。。哪会是什么问题呢?

求大神指导啊!!急死了啊。。

CDX 文件是 dbf 的内联索引文件
如果本来有,后来删掉了,则 dbf 会打不开
你可以建一个空文件冒充

 非常感谢你这么快就回复了。

我测试了下,还是不行。。同样的报错。。

如果不是CDX的问题,会是什么情况呢?

找到原因了。。是因为DBF文件类型不同,所用的VFP版本不同,而ODBC能够支持的最多就到7

后来使用ADODB外加VFP 的oledb驱动可以连接。。