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 preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 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 htmlspecialchars加强版
2010/02/16 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
python全栈开发语法总结
2020/11/22 Python
python 图像增强算法实现详解
2021/01/24 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
中文系师范生自荐信
2013/10/01 职场文书
人事主管的岗位职责
2013/11/16 职场文书
文言文形式的学生求职信
2013/12/03 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
OpenCV-Python实现油画效果的实例
2021/06/08 Python