技术开发 频道

深入学习PostgreSQL事务功能之PHP篇

  【IT168 文档】在上一篇文章中,我们介绍了PostgreSQL的事务功能的定义,并讲解如何通过PostgreSQL客户端进行事务处理。而在本文中,我们将介绍如何在自己的PHP应用程序中如何使用事务。

  一、概述

  给我们的PHP应用程序集成PostgreSQL的事务功能并非什么难事,只要在适当的时间启动事务,然后当所有操作都完成的时候提交事务或者回滚就行了。下面我们介绍利用PHP进行事务处理的一般方式。通过这个示例程序,能够帮您熟悉为应用程序集成事务功能的一般过程。

  二、创建PostgreSQL类

  虽然PostgreSQL为PHP提供了相应的函数库,但是您最好不要直接从自己的脚本中调用这些函数,相反地,您应该将它们封装到一个类中,然后使用这个类与数据库进行交互,其中清单1提供了一个这样的类,它实现了我们所需的一些基本功能。

  清单1 PostgreSQL的数据层类(pgsql.class.php)

<?php
class pgsql {
private $linkid; // PostgreSQL连接标识符
private $host; // PostgreSQL服务器主机
private $user; // PostgreSQL用户
private $passwd; // PostgreSQL密码
private $db; // Postgresql数据库
private $result; // 查询的结果
private $querycount; // 已执行的查询总数
/*
类构造函数,用来初始化$host、$user、$passwd和$db字段。 */
function __construct($host, $db, $user, $passwd) {
$this->host = $host;
$this->user = $user;
$this->passwd = $passwd;
$this->db = $db;
}
/* 连接Postgresql数据库 */
function connect(){
try{
$this->linkid = @pg_connect("host=$this->host dbname=$this->db
user=
$this->user password=$this->passwd");
if (! $this->linkid)
throw new Exception("Could not connect to PostgreSQL server.");
}
catch (Exception $e) {
die($e->getMessage());
}
}
/* 执行数据库查询。 */
function query($query){
try{
$this->result = @pg_query($this->linkid,$query);
if(! $this->result)
throw new Exception("The database query failed.");
}
catch (Exception $e){
echo $e->getMessage();
}
$this->querycount++;
return $this->result;
}
/* 确定受查询所影响的行的总计。 */
function affectedRows(){
$count = @pg_affected_rows($this->linkid);
return $count;
}
/* 确定查询返回的行的总计。 */
function numRows(){
$count = @pg_num_rows($this->result);
return $count;
}
/* 将查询的结果行作为一个对象返回。 */
function fetchObject(){
$row = @pg_fetch_object($this->result);
return $row;
}
/* 将查询的结果行作为一个索引数组返回。 */
function fetchRow(){
$row = @pg_fetch_row($this->result);
return $row;
}
/* 将查询的结果行作为一个关联数组返回。 */
function fetchArray(){
$row = @pg_fetch_array($this->result);
return $row;
}
/* 返回在这个对象的生存期内执行的查询总数。这不是必须的,但是您也许会感兴趣。 */
function numQueries(){
return $this->querycount;
}
}
?>
1
相关文章