最近要用到它吧,于是清风就整理了一下
- 最简单的使用方式
- 取回关联数组形式的结果集
- 把结果集用做对象的方法更简短一些$result->FetchNextObject()
- 常用函数qstr(),DBDate(),Insert_ID(),Affected_Rows()(都是ADODB对象的方法)
- 分页要用到的方法,SelectLimit($query,$num,$offset)
- ADODB的prepare query(编译查询?也许会提高性能,主要是它的占位参数方式比较喜欢)
- 智能事务处理(Smart Transactions)
- 查询缓存CacheExecute()
- 使用AutoExecute(),生成Update 和 Insert SQL语句
最简单的使用方式:
Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");
配置取回的结果集为关联数组 #
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
// 定义查询sql
$query = “SELECT * FROM yourtable”;
// 执行sql
$result = $db->Execute($query) or die(“Error in query: $query. " . $db->ErrorMsg());
// 循环输出,注意要MoveNext(),否则死循环
while (!$result->EOF)
{
echo $result->fields[‘firstname’] . " - " . $result->fields[’lastname’] . “n”;
$result->MoveNext();
}
// 打印结果集中的记录数
echo “n[” . $result->RecordCount() . " rows returned]n”;
// 关闭连接
$db->Close();
?>
把结果集用做对象的方法更简短一些($result->FetchNextObject()):
Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");
// 定义查询sql
$query = "SELECT * FROM yourtable";
// 执行sql
$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());
// 循环输出
while ($row = $result->FetchNextObject())
{
echo $row->firstname . " - " . $row->lastname . "n";
}
// 打印结果集中的记录数
echo "n[" . $result->RecordCount() . " rows returned]n";
// 关闭连接
$db->Close();
?>
常用函数qstr(),DBDate(),Insert_ID(),Affected_Rows()(都是ADODB对象的方法):
Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");
使用qstr转码,让“’”适应不同的DB #
$title = $db->qstr(“It’s Not Me, It’s You!”);
DBDate()函数来转换不同数据库之间的日期内定格式 #
$createdate = $db->DBDate(time());
$query = “INSERT INTO yourtable (title, createdate) VALUES ($title, $createdate)”;
$result = $db->Execute($query) or die(“Error in query: $query. " . $db->ErrorMsg());
打印由 Insert_ID()取得的刚刚插入的记录的ID #
if ($result)
{
echo “Last inserted ID is " . $db->Insert_ID();
}
$query = “DELETE FROM yourtable WHERE author = ‘J. Luser’”;
$result = $db->Execute($query) or die(“Error in query: $query. " . $db->ErrorMsg());
受影响的记录数 #
if ($result)
{
echo $db->Affected_Rows() . " rows deleted”;
}
// 关闭连接
$db->Close();
?>
分页要用到的方法,SelectLimit($query,$num,$offset):
Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");
# 取5条记录,从记录2开始(偏离量是从0开始的,记录2实际是第三条记录了)
$query = "SELECT * FROM yourtable";
$result = $db->SelectLimit($query, 5, 2) or die("Error in query: $query. " . $db->ErrorMsg());
// 循环输出
while (!$result->EOF)
{
echo $result->fields[1] . " - " . $result->fields[2] . "n";
$result->MoveNext();
}
// 关闭连接
$db->Close();
?>
ADODB的prepare query(预备查询,也许会提高性能,主要是它的占位参数方式比较喜欢):
Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");
prepare query #
$query = $db->Prepare(“INSERT INTO yourtable (firstname, lastname) VALUES (?, ?)”);
插入的数据 #
$arr = array(‘wensi’,‘cater’);
执行 #
$result = $db->Execute($query, array($arr[0], $arr[1])) or die(“Error in query: $query. " . $db->ErrorMsg());
// 关闭连接
$db->Close();
?>
智能事务处理(Smart Transactions):
BeginTrans();
$ok = $conn->Execute($sql);
if ($ok) $ok = $conn->Execute($sql2);
if (!$ok) $conn->RollbackTrans();
else $conn->CommitTrans();
// 现在,如果正常CompleteTrans()会提交事务,如果有错误则CompleteTrans()会回滚
$conn->StartTrans();
$conn->Execute($sql);
$conn->Execute($Sql2);
$conn->CompleteTrans();
?>
查询缓存(CacheExecute()):
PConnect('localhost','userid','password','database');
# cache 15 secs
$rs = $conn->CacheExecute(15, 'select * from table');
/* 生成html表格 */
rs2html($rs);
?>
使用AutoExecute(),生成Update 和 Insert SQL语句:
AutoExecute($yourtable, $record, 'INSERT');
// UPDATE
$record["firstname"] = "Caroline";
$record["lastname"] = "Smith";
# 更新了Smith的firstname
$insertSQL = $conn->AutoExecute($yourtable, $record, 'UPDATE', 'id = 1');
?>