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自动反斜杠的函数代码
Jan 05 PHP
组合算法的PHP解答方法
Feb 04 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
php中hashtable实现示例分享
Feb 13 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 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
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
Python快速排序算法实例分析
2017/11/29 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
django 实现简单的插入视频
2020/04/07 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
会计自我鉴定范文
2013/10/06 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
公务员年终个人总结
2015/02/12 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python
一文弄懂MySQL索引创建原则
2022/02/28 MySQL