PHP操作Postgresql封装类与应用完整实例


Posted in PHP onApril 24, 2018

本文实例讲述了PHP操作Postgresql封装类与应用。分享给大家供大家参考,具体如下:

这个类封装了一些常用的函数,原帖里面还有事务处理的内容,以后再学习吧。

类文件定义:

<?php
class pgsql {
private $linkid; // PostgreSQL连接标识符
private $host; // PostgreSQL服务器主机
private $port; // PostgreSQL服务器主机端口
private $user; // PostgreSQL用户
private $passwd; // PostgreSQL密码
private $db; // Postgresql数据库
private $result; // 查询的结果
private $querycount; // 已执行的查询总数
/* 类构造函数,用来初始化$host、$user、$passwd和$db字段。 */
function __construct($host, $port ,$db, $user, $passwd) {
$this->host = $host;
$this->port = $port;
$this->user = $user;
$this->passwd = $passwd;
$this->db = $db;
}
/* 连接Postgresql数据库 */
function connect(){
try{
$this->linkid = @pg_connect("host=$this->host port=$this->port 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;
}
}
?>

测试的php一并放出,另外测试了下局域网内的另一台postgresql服务器,感觉查询速度还是很快的,查询postgregis数据也是杠杠滴。

<?php
  include 'PGDB.php';
  $PG = new pgsql("192.168.1.167", "5432", "postgis", "postgres", "post");
  $PG->connect();
  if(!$PG)
  {
    $db_error = "无法连接到PostGreSQL数据库!";
    echo $db_error;
  }
  else
  {
    echo "成功连接!";
    $query = "select name from ex where gid = 2";
    $result = $PG->query($query);
    $row = $PG->fetchRow();
    echo $row[0];
  }
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
php echo 输出字符串函数详解
May 13 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP中多线程的两个实现方法
Oct 14 PHP
php+iframe 实现上传文件功能示例
Mar 04 PHP
php接口实现拖拽排序功能
Apr 23 #PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 #PHP
PHP生成推广海报的方法分享
Apr 22 #PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 #PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 #PHP
Laravel模型间关系设置分表的方法示例
Apr 21 #PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 #PHP
You might like
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
php GUID生成函数和类
2014/03/10 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Python中的推导式使用详解
2015/06/03 Python
python正则表达式的使用
2017/06/12 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
详解python 中in 的 用法
2019/12/12 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python实现门限回归方式
2020/02/29 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
办公室人员先进事迹
2014/01/27 职场文书
求职信怎么写
2014/05/23 职场文书
课程设计的心得体会
2014/09/03 职场文书
出售房屋委托书范本
2014/09/24 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
体育教师研修感悟
2015/11/18 职场文书
vue+echarts实现多条折线图
2022/03/21 Vue.js