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之第六天
Oct 09 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 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
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
Python中__init__.py文件的作用详解
2016/09/18 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
django model object序列化实例
2020/03/13 Python
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
经典c++面试题二
2015/08/14 面试题
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
园林施工员岗位职责
2013/12/11 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis