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 相关文章推荐
浅析51个PHP处理字符串的函数
Aug 02 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
PHP生成条形图的方法
Dec 10 PHP
PHP中的Session对象如何使用
Sep 25 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
php数据访问之查询关键字
May 09 PHP
smarty自定义函数用法示例
May 20 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
PHP 断点续传实例详解
Nov 11 PHP
thinkphp 框架数据库切换实现方法分析
May 18 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
python实现读Excel写入.txt的方法
2018/04/29 Python
django缓存配置的几种方法详解
2018/07/16 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
python进度条显示之tqmd模块
2020/08/22 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
运动会入场解说词
2014/02/07 职场文书
集体备课反思
2014/02/12 职场文书
2014年党员整改措施
2014/10/24 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书