MySql AdoDB基本的函数
2013-12-26 14:34
302 查看
1.GetAll方法我们可以使用GetAll方法代替Execute()方法,该方法返回的结果为一个二维关联数据,这样可以使用foreach或for循环语句处理,非常方便。另外,GetAll取得的数组与Smarty模板的foreach配合得非常好。
我们一起看下面的脚本例子:
<?php
include_once("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", "root", "root", "library")
or die("Unable to connect");
// 构造并执行一个查询
$query = "SELECT * FROM library";
$result = $db->GetAll($query) or die("Error in
query: $query. " . $db->ErrorMsg());
// 清除无用的对象
$db->Close();
// 可以使用print_r打印该数组的内容
// print_r($result); exit(0);
// 遍历记录集,显示列的内容:TITLE 和AUTHOR
foreach ($result as $row){
echo $row[1] . " - " . $row[2]
. "\n";
}
// 取得和显示返回的记录行数
echo "\n[" . sizeof($result) . " 行记录被返回]\n";
?>
GetAll()方法取得记录集后,产生一个二维数组,类似于下面的样子:
Array
(
[0] => Array
(
[0] => 14
[id] => 14
[1] => Mystic
River
[title] => Mystic
River
[2] => Dennis
Lehane
[author] => Dennis
Lehane
)
[1] => Array
(
[0] => 15
[id] => 15
[1] => For Kicks
[title] => For
Kicks
[2] => Dick
Francis
[author] => Dick
Francis
)
//下略
)
我们在数组一章,提到过这类混合数组最适合用foreach来处理。这种方法是对Execute()方法的补充或替代,尤其适合在遍历查询整个表时使用。
另外,ADODB还提供取得一条记录的方法:GetOne()。
2.GetOne()方法ADODB有个比较直接的方法可以比较方便地检测某条记录是否存在,那就是它的GetOne($sql)方法。
该方法返回查询记录的第1条第1个字段名的值,如果执行过程中出现错误,则返回布尔值false。
我们可以检测这个值是否存在:
<?php
Include_once("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", “root”, “passwd”, “adodb”)
or die("Unable to connect!");
$rs = $db->GetOne("SELECT *
FROM library WHERE id='$id'");
if($rs){
echo '记录存在';
}else {
echo
'记录不存在';
}
?>
不过这样有一个问题是,如果数据表中id=$id的记录有多条,不仅仅要知道是否存在有这样一条记录,还要把这条记录提取出来,则可以使用ADODB的GetRow()方法。
3.GetRow()方法<?php
Include_once("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", “root”, “passwd”, “adodb”)
or die("Unable to connect!");
$rs = $db->GetRow("SELECT *
FROM library WHERE id='$id'");
if(is_array($rs)){
echo
'记录存在';
print_r($rs);
} else {
echo
'记录不存在';
}
?>
需要注意的是,GetOne($sql) 和 GetRow($sql)
都能得到一条特定的记录,或者得到该记录不存在的信息,但是如果符合查询条件的记录存在多条时,则这两个方法只传回第一条记录,其他的都自动抛弃。
如果只要得到查询结果的行数,则可以使用结果集方法中的RecordCount()方法。
4.取得返回的记录行数ADODB还提供了一批实用功能,如在进行查询时,提供了非常有用的RecordCount()
和FieldCount()方法,分别返回记录的数量和字段的数量,以下是应用这两个方法的例子。
<?php
include("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", “root”, “passwd”, “adodb”)
or die("Unable to connect!");
// 构造并执行一个查询
$query = "SELECT * FROM library";
$result = $db->Execute($query) or die("Error in
query: $query. " . $db->ErrorMsg());
// 取得和显示返回的记录行数
echo $result->RecordCount() . " 行记录被返回\n";
// 取得和显示返回的字段个数
echo $result->FieldCount() . " 个字段被返回\n";
// clea up
$db->Close();
?>
我们可以使用FetchField()方法取得字段的信息,其中含有该字段的详细资料,包括名称和类型等,请看如下的脚本例子。
<?php
include("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", "root", "passwd", "adodb")
or die("Unable to connect!");
// 构造并执行一个查询
$query = "SELECT * FROM library";
$result = $db->Execute($query) or die("Error in
query: $query. " . $db->ErrorMsg());
// 取得记录集中字段的结构信息
for($x=0; $x<$result->FieldCount();
$x++){
print_r($result->FetchField($x));
}
// 清理无用的对象
$db->Close();
?>
下面输出的是有关id字段的结构信息。
stdClass myMagicbject
(
[name] => id
=>
我们一起看下面的脚本例子:
<?php
include_once("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", "root", "root", "library")
or die("Unable to connect");
// 构造并执行一个查询
$query = "SELECT * FROM library";
$result = $db->GetAll($query) or die("Error in
query: $query. " . $db->ErrorMsg());
// 清除无用的对象
$db->Close();
// 可以使用print_r打印该数组的内容
// print_r($result); exit(0);
// 遍历记录集,显示列的内容:TITLE 和AUTHOR
foreach ($result as $row){
echo $row[1] . " - " . $row[2]
. "\n";
}
// 取得和显示返回的记录行数
echo "\n[" . sizeof($result) . " 行记录被返回]\n";
?>
GetAll()方法取得记录集后,产生一个二维数组,类似于下面的样子:
Array
(
[0] => Array
(
[0] => 14
[id] => 14
[1] => Mystic
River
[title] => Mystic
River
[2] => Dennis
Lehane
[author] => Dennis
Lehane
)
[1] => Array
(
[0] => 15
[id] => 15
[1] => For Kicks
[title] => For
Kicks
[2] => Dick
Francis
[author] => Dick
Francis
)
//下略
)
我们在数组一章,提到过这类混合数组最适合用foreach来处理。这种方法是对Execute()方法的补充或替代,尤其适合在遍历查询整个表时使用。
另外,ADODB还提供取得一条记录的方法:GetOne()。
2.GetOne()方法ADODB有个比较直接的方法可以比较方便地检测某条记录是否存在,那就是它的GetOne($sql)方法。
该方法返回查询记录的第1条第1个字段名的值,如果执行过程中出现错误,则返回布尔值false。
我们可以检测这个值是否存在:
<?php
Include_once("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", “root”, “passwd”, “adodb”)
or die("Unable to connect!");
$rs = $db->GetOne("SELECT *
FROM library WHERE id='$id'");
if($rs){
echo '记录存在';
}else {
echo
'记录不存在';
}
?>
不过这样有一个问题是,如果数据表中id=$id的记录有多条,不仅仅要知道是否存在有这样一条记录,还要把这条记录提取出来,则可以使用ADODB的GetRow()方法。
3.GetRow()方法<?php
Include_once("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", “root”, “passwd”, “adodb”)
or die("Unable to connect!");
$rs = $db->GetRow("SELECT *
FROM library WHERE id='$id'");
if(is_array($rs)){
echo
'记录存在';
print_r($rs);
} else {
echo
'记录不存在';
}
?>
需要注意的是,GetOne($sql) 和 GetRow($sql)
都能得到一条特定的记录,或者得到该记录不存在的信息,但是如果符合查询条件的记录存在多条时,则这两个方法只传回第一条记录,其他的都自动抛弃。
如果只要得到查询结果的行数,则可以使用结果集方法中的RecordCount()方法。
4.取得返回的记录行数ADODB还提供了一批实用功能,如在进行查询时,提供了非常有用的RecordCount()
和FieldCount()方法,分别返回记录的数量和字段的数量,以下是应用这两个方法的例子。
<?php
include("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", “root”, “passwd”, “adodb”)
or die("Unable to connect!");
// 构造并执行一个查询
$query = "SELECT * FROM library";
$result = $db->Execute($query) or die("Error in
query: $query. " . $db->ErrorMsg());
// 取得和显示返回的记录行数
echo $result->RecordCount() . " 行记录被返回\n";
// 取得和显示返回的字段个数
echo $result->FieldCount() . " 个字段被返回\n";
// clea up
$db->Close();
?>
我们可以使用FetchField()方法取得字段的信息,其中含有该字段的详细资料,包括名称和类型等,请看如下的脚本例子。
<?php
include("libs/adodb/adodb.inc.php");
// 创建一个mysql连接实例对象
$db = NewADOConnection("mysql");
// 打开一个数据库连接
$db->Connect("localhost", "root", "passwd", "adodb")
or die("Unable to connect!");
// 构造并执行一个查询
$query = "SELECT * FROM library";
$result = $db->Execute($query) or die("Error in
query: $query. " . $db->ErrorMsg());
// 取得记录集中字段的结构信息
for($x=0; $x<$result->FieldCount();
$x++){
print_r($result->FetchField($x));
}
// 清理无用的对象
$db->Close();
?>
下面输出的是有关id字段的结构信息。
stdClass myMagicbject
(
[name] => id