Php FoxPro保留字问题?

Php FoxPro保留字问题?,php,html,foxpro,Php,Html,Foxpro,我正在尝试读取一个名为SCHEDULE.dbf的foxpro表。数据通过数据连接器在PHP中读取,然后通过管道传输到我的网页。如果我重命名Schedule.dbf,这一切都会非常有效。除了日程表之外,任何名字似乎都管用。但是,当我运行名为Schedule的程序时,会收到“SQL错误:[Microsoft][ODBC数据库驱动程序]未找到索引文件,SQL状态S0012 in SQLExecDirect”错误消息。我唯一的想法是时间表是某个地方的保留字,但我在任何列表中都找不到它。 我完全不知所措。

我正在尝试读取一个名为SCHEDULE.dbf的foxpro表。数据通过数据连接器在PHP中读取,然后通过管道传输到我的网页。如果我重命名Schedule.dbf,这一切都会非常有效。除了日程表之外,任何名字似乎都管用。但是,当我运行名为Schedule的程序时,会收到“SQL错误:[Microsoft][ODBC数据库驱动程序]未找到索引文件,SQL状态S0012 in SQLExecDirect”错误消息。我唯一的想法是时间表是某个地方的保留字,但我在任何列表中都找不到它。 我完全不知所措。重命名表实际上不是一个选项,因为它是更大的数据输入和管理系统的一部分,我不想修改它。 有什么建议吗?

错误是“找不到索引文件”-匹配的.cdx索引文件与.dbf文件不在同一目录中。确保它在同一个目录中,或者您可以使用FoxPro从表中删除索引。

我不能说是dBASE(如果是FoxPro数据而不是dBASE,我会使用Microsoft的OleDb提供程序专门为VFP提供索引)。在Foxpro中,系统使用成对(甚至三重)文件。所有相应的文件名都需要重命名,例如

SCHEDULE.DBF (main data)
SCHEDULE.CDX (compound index file for all indexes for given file)
SCHEDULE.FPT (separate file if any memo/general data columns in the file)
如果您尝试只重命名.DBF而不重命名其余的(.FPT仅在数据列的类型为memo或general时才能找到),则打开该文件时会遇到阻塞

另外。如果该表是数据库容器的一部分(通过VFP),并且您尝试打开它,则该文件具有指向其绑定到的数据库的附加头信息。如果它在数据库中找不到它,也会给你一个错误指示


VFP中的数据库容器的后缀值为.DBC、.DCT和.DCX。

同一目录中是否存在
schedule.cdx
?如果是,则可能已损坏。schedule.cdx就在那里。当我将Schedule的名称更改为Schedul而不更改cdx的名称时,它不会仍然抛出错误吗?cdx存在并且名称相同。为什么我把日程表的名字改成Schedul会起作用呢?在我看来,cdx仍然无法找到?您提出了一个非常有效的观点,我一直在使用dBase ODBC。我要用FP OleDb试一试!需要考虑的是保留词,因为它们是内置到VFP中的函数。它们有方法告诉VFP,您将其定义为文件而不是函数。例如,我有一个叫go的程序。所以我不能键入“go()”,我必须键入“do go”。如果我有需要调用的参数,那么我需要键入“DoGoWith”。如果数据库是一个保留字,或者即使您认为可能是保留字,也要在结尾添加扩展名。@StevenGruner,是的,有些方法可以解决某些问题。。。但是,如果有一个像File、Where、Select等列的名称,那该有多愚蠢呢。。。有些人会做一些愚蠢的事情,包括“约会”来表示发生了什么事。我只是想帮助防止在任何开发过程中这样做。