打印本文 打印本文 关闭窗口 关闭窗口
指南:从MySQL转向ADODB(1)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1942  更新时间:2009/4/23 10:49:28  文章录入:mintao  责任编辑:mintao
执行SQL语句

$result = $db->Execute("SELECT * FROM employees");
if ($result === false) die("failed");

这将向服务器发送一个SQL声明。如果执行成功Execute()将返回一个recordset对象。
你应该像上面那样检查$result .

可能把初学者弄糊涂的问题是在ADODB里有两类对象,connection对象和recordset
对象。我们分别在什么时候用它们呢?

connection 对象($db) 负责连接到数据库,格式化你的SQL语句,并向数据库发出查询
请求。Recordset对象($result)负责获取结果,并将响应转化为文本或者一个数组。

我需要补充的唯一一点是:ADODB提供许多辅助函数,使得使用INSERT和UPDATE声明更
简单。这些辅助函数会在高级部分提到。

获取数据

while (!$result->EOF) {
   for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
            print $result->fields[$i].'''' '''';
   $result->MoveNext();
   print "<br>\n";
}

得到数据的范例像是在读取一个文件。对于每一行,我们首先检查是否读到了文件末
尾(EOF)。如果未读到文件末尾,循环读取每一行的各个字段。然后转到下一行
(MoveNext),重复上面的操作。

$result->fields[] 数组由PHP数据库扩展(extensions)生成。 一些数据库扩展不
支持使用字段名称作为字段索引。要强制使用名称索引―也就是联合数组―要使用
$ADODB_FETCH_MODE 全局变量。

         $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
         $rs1 = $db->Execute(''''select * from table'''');
         $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
         $rs2 = $db->Execute(''''select * from table'''');
         print_r($rs1->fields); // 显示 数组([0]=>''''v0'''',[1] =>''''v1'''')
         print_r($rs2->fields); // 显示 数组([''''col1'''']=>''''v0'''',[''''col2''''] =>''''v1'''')

就像你在上面的例子里看到的那样,当Execute()创建recordset的时候,两个
recordset对象都存储和使用了基于$ADODB_FETCH_MODE设置的不同获取模式。

ADOConnection

ADODB对象,用来建立数据库连接,执行SQL声明,并具有一系列能使针对连接和日期
格式之类问题的SQL语句格式标准化的功能函数。

其它有用的函数

$recordset->Move($pos) 转到指定行. ADODB 支持所有数据库的向前移动
(forward scrolling)。一些数据库不支持向后移动(backwards scrolling)。
通常情况下这没什么关系,因为你总是可以通过缓存记录来模拟向后移动。

$recordset->RecordCount() 返回SQL声明选取的记录数。一些数据库会返回-1
因为它不支持这项操作。

$recordset->GetArray() 以数组形式返回结果.

rs2html($recordset) 是一个函数,它根据传给它的$recordset 生成一个HTML表格.
一个例子(相应行用粗体标识):

   include(''''adodb.inc.php''''); 
   include(''''tohtml.inc.php''''); /* 将 rs2html 函数包含进来 */
   $conn = &ADONewConnection(''''mysql''''); 
   $conn->PConnect(''''localhost'''',''''userid'''',''''password'''',''''database'''');
   $rs = $conn->Execute(''''select * from table'''');
   rs2html($rs); /*根据 recordset 生成html表格 */ 

http://php.weblogs.com/adodb_manual上的文档里列出许多其它辅助函数。

 

 

 

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口