资源说明:这个例子建了一个连接,用ODBC打开Access的数据库NorthWind(安装Access时带的示范)。在执行了SQL语句后,返回了RecordSet对象。例子显示了前三个字段: <? $dbc = new COM("ADODB.Connection"); $dbc->Provider = "MSDASQL"; $dbc->Open("nwind"); $rs = $dbc->Execute("select * from products"); $i = 0; while (!$rs->EOF) { $i += 1; $fld0 = $rs->Fields(0); $fl
在Windows版的PHP环境中,ADO(ActiveX Data Objects)是一种常用的数据访问技术,它允许开发者通过ODBC(Open Database Connectivity)接口与各种数据库进行交互。本例中,我们将详细探讨如何利用ADO在PHP中建立数据库连接,执行SQL查询并处理结果。
创建一个新的COM(Component Object Model)对象,这是ADO的基础,它代表一个数据库连接。在PHP中,这可以通过`new COM()`函数实现:
```php
$dbc = new COM("ADODB.Connection");
```
接下来,设置连接提供者。在这个例子中,我们使用的是"MSDASQL",这是一个ODBC驱动程序,它允许ADO与多种数据源(包括Access)通信:
```php
$dbc->Provider = "MSDASQL";
```
然后,打开数据库连接。这里的"nwind"是数据源名称(DSN),通常对应于已经配置好的ODBC数据源。例如,假设已有一个名为"NorthWind"的ODBC数据源指向Access的NorthWind数据库:
```php
$dbc->Open("nwind");
```
执行SQL查询,这里我们选择从"products"表中选取所有列:
```php
$rs = $dbc->Execute("select * from products");
```
`$rs`现在是一个RecordSet对象,包含了查询的结果。我们可以遍历这个RecordSet来获取数据:
```php
$i = 0;
while (!$rs->EOF) {
$i += 1;
$fld0 = $rs->Fields(0);
$fld1 = $rs->Fields(1);
$fld2 = $rs->Fields(2);
// 打印前三个字段的值
print "$fld0->value $fld1->value $fld2->value
"; // 移动到下一条记录 $rs->MoveNext(); } ``` 在循环中,`$rs->EOF`检查是否到达RecordSet的末尾。`$rs->Fields()`方法用于获取指定索引的字段值。在这里,我们只显示了前三个字段,但实际可以获取所有字段。 关闭RecordSet和数据库连接: ```php $rs->Close(); ``` 这个例子展示了在Windows环境下使用PHP和ADO访问数据库的基本流程。实际上,ADO不仅可以用于Access,还可以与SQL Server、Oracle等其他数据库进行交互。通过调整`Provider`和DSN,可以灵活地连接到不同的数据库系统。 在实际应用中,考虑到性能和安全性,可能需要更复杂的错误处理、参数化查询以及预编译的SQL语句。此外,使用PDO(PHP Data Objects)或mysqli扩展也是更现代和推荐的PHP数据库访问方式,它们提供了更好的功能和安全性。然而,对于理解ADO在PHP中的工作原理,这个简单的例子提供了一个良好的起点。
"; // 移动到下一条记录 $rs->MoveNext(); } ``` 在循环中,`$rs->EOF`检查是否到达RecordSet的末尾。`$rs->Fields()`方法用于获取指定索引的字段值。在这里,我们只显示了前三个字段,但实际可以获取所有字段。 关闭RecordSet和数据库连接: ```php $rs->Close(); ``` 这个例子展示了在Windows环境下使用PHP和ADO访问数据库的基本流程。实际上,ADO不仅可以用于Access,还可以与SQL Server、Oracle等其他数据库进行交互。通过调整`Provider`和DSN,可以灵活地连接到不同的数据库系统。 在实际应用中,考虑到性能和安全性,可能需要更复杂的错误处理、参数化查询以及预编译的SQL语句。此外,使用PDO(PHP Data Objects)或mysqli扩展也是更现代和推荐的PHP数据库访问方式,它们提供了更好的功能和安全性。然而,对于理解ADO在PHP中的工作原理,这个简单的例子提供了一个良好的起点。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。