- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 dbf 数据库与 php 连接起来。我尝试了几种不同的方法,但没有成功。
PHP:5.3.8文件:C:\xampp\htdocs\work\vcabdoc.dbf
创建数据源dbvfp,驱动C:\Windows\system32\vfpodbc.dll
使用 $odbc = odbc_connect ('dbvfp', '', '') or die('Could Not Connect to ODBC Database!');
Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Visual FoxPro Driver]File c:\xampp\htdocs\work\vcabdoc.dbf is not a database., SQL state S1000 in SQLConnect in C:\xampp\htdocs\WORK\odbc.php on line 5
include('\xampp\php\PEAR\adodb\adodb.inc.php');
include_once('\xampp\php\PEAR\adodb\adodb-pager.inc.php');
session_start();
$db = ADONewConnection('vfp');
$dsn="Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=C:\\xampp\\htdocs\\work\\vcabdoc.dbf;Exclusive=No;";
$db->Connect($dsn) or die('nope');
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$query = "Select * from vcabdoc.dbf";
$rs = $db->Execute($query);
echo 'e';
while (!$rs->EOF) {
print_r($rs->fields);
$rs->MoveNext();
Notice: Trying to get property of non-object in C:\xampp\htdocs\WORK\testing.php on line 45
Notice: Trying to get property of non-object in C:\xampp\htdocs\WORK\testing.php on line 46
Fatal error: Call to a member function MoveNext() on a non-object in C:\xampp\htdocs\WORK\testing.php on line 47
$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\xampp\\htdocs\\work\\vcabdoc.dbf;";');
// SQL statement to build recordset.
$rs = $conn->Execute("SELECT * FROM vcabdoc");
echo "<p>List of couriers:</p><hr>";
// Display all the values in the records set
while (!$rs->EOF) {
$fv = $rs->Fields("Name");
echo $fv->value."<br>\n";
$rs->MoveNext();
}
$rs->Close();
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for Visual FoxPro<br/><b>Description:</b> Invalid path or file name.' in C:\xampp\htdocs\WORK\testing.php:54 Stack trace: #0 C:\xampp\htdocs\WORK\testing.php(54): com->Open('Provider=VFPOLE...') #1 {main} thrown in C:\xampp\htdocs\WORK\testing.php on line 54
在这种情况下,尝试使用和不使用双斜杠 (\)。
有什么帮助吗?提前致谢。
问候,
若昂
最佳答案
您正在设置的数据源包含 .DBF 的全名...不要那样做。数据源应该只指向表所在的物理目录......然后,当您向表发出查询时,它会根据您正在查询的名称在路径中查找 .dbf,找到它并返回它...另外,您不需要显式包含 .dbf,例如
从 YourTable.dbf 中选择 *
根据反馈编辑
您正在打开的“连接”有一个数据源。那就是告诉它应该在哪里找到数据。当连接到 VFP 源时,您所要做的就是将源设置为表的物理路径。请注意,我刚刚从字符串参数中删除了“VCABDOC.DBF”。
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\xampp\\htdocs\\work;";');
现在,您应该能够直接从位于“c:\xampp\htdocs\work”文件夹中的表进行查询。
$rs = $conn->Execute("SELECT * FROM vcabdoc");
最后,假设您的“c:\xampp\htdocs\work”文件夹中有多个 .dbf 表。假设有一个简单的客户/订单输入系统,并且您想获得特定人员的所有订单。只要两个表都在同一个文件夹中(即:work),那么你就可以做类似的事情
$rs = $conn->Execute(
"SELECT customer.*, orders.*
FROM customer
join orders on customer.ID = orders.customerID
order by orders.date");
请注意,我没有明确地将完整路径加上表名放入查询中。连接知道它将在何处尝试查找表以完成查询。此外,您的连接不允许您向后移动相对路径(更接近 C:),但允许您相对向前移动。所以,假设你有一个类似于
的目录结构c:\xampp\htdocs\work\
c:\xampp\htdocs\work\SubFolder1
c:\xampp\htdocs\work\SubFolder2
然后您将连接指向原始示例中的“工作”文件夹。您可以查询引用查询中的子文件夹。在此查询中,我在每个表名引用后使用了一个“别名”,因此我不必在查询的其余部分使用的地方显式键入长表名。它更易于阅读。
("c" is alias to customers table)
("sft1" is alias to Sub-folder first table )
("sft2" is alias to Sub-folder second table )
select
c.*,
sft1.someField,
sft2.AnotherField
from
customers c
join SubFolder1\SomeOtherTable sft1
on c.SomeCommonColumn = sft1.SameCommonColumn
join SubFolder2\SecondTable sft2
on c.ADifferentColumn =sft2.SimilarPurposeColumn
希望这有助于为您澄清一些事情。
关于php、odbc 和 vfp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740869/
这个问题已经有答案了: what is the difference between OLE DB and ODBC data sources? (11 个回答) 已关闭10 年前。 OLEDB 和
我正在制作安装脚本并且我正在使用 ODBC,我如何自动将节点添加到 ODBC 数据源。 使用 Visual Studio 安装项目构建安装程序,但我能够为其运行任何脚本。 谢谢。 最佳答案 1) OD
所以我正在将一个旧的 filemaker 数据库传输到 MySQL,一些重复的字段给我带来了一些问题。我读过 ODBC 标准支持这些字段,只有当它们的类型是“文本”并且每个重复都与某个定界符( see
一个月前,我向一个哥们展示了如何使用 .NET 来查询 MySQL。它工作得很好,但他不明白为什么我们需要一个 MySQL 与 ODBC 结合的“驱动程序”。他认为 ODBC 就足够了。 当他问我为什
为什么 ODBC 很慢?底层架构是什么?有人可以对此多加关注> 最佳答案 一般来说(我的意思是 GENERAL)ODBC 驱动程序在混合中添加了另一层。它必须接受您的查询并将其转换为本地查询语言(本地
问题:我正在使用 AsteriskNow,它在 VirtualBox 中运行 asterisk 2.0 服务器。我想使用 ODBC 模块将 Asterisk 与 MySQL 数据库连接起来。但它失败了
我有一个名为“myodbc”的用户定义的 ODBC 连接,其中保存了用户名和密码。这是管理员为我创建的,因此我无法访问凭据。 如何在不传递凭据的情况下与 SAS 建立连接。我认为以下工作会,但我收到无
我最近发现 libname 语句对于访问驻留在 odbc 中的表非常方便。但我不知道如何访问那些具有两级名称的表。下面是一个例子。 我使用的旧代码(此代码有效): proc sql; conn
我们通常使用 MS Visual Foxpro v9.0 SP1、语言、表格和报告。但是,有时我们使用 ODBC 驱动程序连接到表。 ODBC 驱动程序是为 Foxpro v6 编写的,不支持某些嵌套
我第一次尝试在使用 PostgreSQL 9 的 Windows XP Pro 上打开一个程序。我收到一条错误消息: A problem was encountered while trying to
我有一个 spark 集群设置,并在我的数据集上尝试了 native scala 和 spark sql,该设置似乎在大多数情况下都有效。我有以下问题 从 ODBC/外部连接到集群,我应该期待什么?
我正在尝试为 Hive 设置 ODBC 连接。我按照以下步骤操作,但没有成功。 用户 DSN-->添加--> Hortonworks Hive ODBC 驱动程序--> 我提供了以下详细信息 主机:主
我找不到任何文档或示例。到目前为止,我可以成功连接,但是我不知道选择和返回数据的语法。 :odbc.start() {:ok, conn} = :odbc.connect('DSN=mydsn;UID
我正在阅读一篇有关数据透视缓存的 MS Excel 帮助文章,并想知道 OLE DB 和 ODBC 源 的含义 ...You should use the CommandText property i
从应用程序调用 SQLColAttribute 时出现 SQL_INVALID_HANDLE 错误(尝试与自行开发的 odbc 驱动程序通信)我不知道为什么句柄被声明为无效句柄,因为它是一个简单的结构
我有一个简单的 SQL,需要通过 ODBC 调用 RedShift。SQL是这样的 SELECT id as Tag From SomeView 这根本不起作用。它给了我错误 DataSource.E
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
从应用程序调用 SQLColAttribute 时出现 SQL_INVALID_HANDLE 错误(尝试与自行开发的 odbc 驱动程序通信)我不知道为什么句柄被声明为无效句柄,因为它是一个简单的结构
我有一个简单的 SQL,需要通过 ODBC 调用 RedShift。SQL是这样的 SELECT id as Tag From SomeView 这根本不起作用。它给了我错误 DataSource.E
我正在尝试使用 BIML 生成自动暂存区域。源数据库为Progress,通过ODBC连接。 我正在使用以下演练: https://www.cathrinewilhelmsen.net/2015/07/
我是一名优秀的程序员,十分优秀!