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 相关文章推荐
用mysql内存表来代替php session的类
Feb 01 PHP
Views rows style模板重写代码
May 16 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
PHPUnit安装及使用示例
Oct 29 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 PHP
laravel5.6中的外键约束示例
Oct 23 PHP
如何在PHP中使用数组
Jun 09 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
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
跟老齐学Python之关于类的初步认识
2014/10/11 Python
详细介绍Python函数中的默认参数
2015/03/30 Python
Python中__name__的使用实例
2015/04/14 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
Python subprocess模块常见用法分析
2018/06/12 Python
python全栈知识点总结
2019/07/01 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
先进集体申报材料
2014/12/25 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
带你了解Java中的ForkJoin
2022/04/28 Java/Android
详解SQL报错盲注
2022/07/23 SQL Server