PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例


Posted in PHP onMarch 31, 2018

本文实例讲述了PHP实现基于PDO扩展连接PostgreSQL对象关系数据库的方法。分享给大家供大家参考,具体如下:

$pdo = NULL;
if(version_compare(PHP_VERSION, '5.3.6', '<')){
  $pdo = new \PDO('pgsql:host=127.0.0.1;port=5432;dbname=postgredb1','postgres',"123456",array(\PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES \'UTF8\'' ));
}
else{
  $pdo = new \PDO('pgsql:host=127.0.0.1;port=5432;dbname=postgredb1','postgres',"123456");
}
try {
  $pdo->beginTransaction();
  $tableName = 'user';
  if($fetch = true){
    $myPDOStatement = $pdo->prepare("SELECT * FROM " . $tableName . " WHERE id=:id ");
    if(!$myPDOStatement) {
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $id = 1;
    $myPDOStatement->bindParam(":id",$id);
    $myPDOStatement->execute();
    if($myPDOStatement->errorCode()>0){
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $item = $myPDOStatement->fetch();
    print_r($item);
  }
  $insertedId = 0;
  if($insert = true){
    $myPDOStatement = $pdo->prepare("INSERT INTO " . $tableName . "(username,password,status)  VALUES(:username,:password,:status)");
    if(!$myPDOStatement) {
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $timestamp = time();
    $data = array(
      'username' =>'usernamex',
      'password' =>'passwordx',
      'status' =>'1',
    );
    $myPDOStatement->bindParam(":username",$data['username']);
    $myPDOStatement->bindParam(":password",$data['password']);
    $myPDOStatement->bindParam(":status",$data['status']);
    $myPDOStatement->execute();
    if($myPDOStatement->errorCode()>0){
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $affectRowCount = $myPDOStatement->rowCount();
    if($affectRowCount>0){
      $insertedId = $pdo->lastInsertId();
    }
    print_r('$insertedId = '.$insertedId);//PostgreSQL不支持
    print_r('$affectRowCount = '.$affectRowCount);
  }
  if($update = true){
    $myPDOStatement = $pdo->prepare("UPDATE " . $tableName . " SET username=:username, status=:status WHERE id=:id");
    if(!$myPDOStatement) {
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $id = 1;
    $username = 'username update';
    $status = 0;
    $myPDOStatement->bindParam(":id",$id);
    $myPDOStatement->bindParam(":username",$username);
    $myPDOStatement->bindParam(":status",$status);
    $myPDOStatement->execute();
    if($myPDOStatement->errorCode()>0){
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $affectRowCount = $myPDOStatement->rowCount();
    print_r('$affectRowCount = '.$affectRowCount);
  }
  if($fetchAll = true){
    $myPDOStatement = $pdo->prepare("SELECT * FROM " . $tableName ." WHERE id > :id");
    if(!$myPDOStatement) {
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $id = 0;
    $myPDOStatement->bindParam(":id",$id);
    $myPDOStatement->execute();
    if($myPDOStatement->errorCode()>0){
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $list = $myPDOStatement->fetchAll();
    print_r($list);
  }
  if($update = true){
    $myPDOStatement = $pdo->prepare("DELETE FROM " . $tableName . " WHERE id=:id");
    if(!$myPDOStatement) {
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    //$insertedId = 10;
    $myPDOStatement->bindParam(":id",$insertedId);
    $myPDOStatement->execute();
    if($myPDOStatement->errorCode()>0){
      $errorInfo = $myPDOStatement->errorInfo();
      throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]);
    }
    $affectRowCount = $myPDOStatement->rowCount();
    print_r('$affectRowCount = '.$affectRowCount);
  }
  $pdo->commit();
} catch (\Exception $e) {
  $pdo->rollBack();
//     print_r($e);
}
$pdo = null;

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php session应用实例 登录验证
Mar 16 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
php获取json数据所有的节点路径
May 17 PHP
一个简单的php路由类
May 29 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
laravel5 Eloquent 实现事务方式
Oct 21 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 #PHP
PHPTree――php快速生成无限级分类
Mar 30 #PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 #PHP
PHP实现动态删除XML数据的方法示例
Mar 30 #PHP
PHP实现动态添加XML中数据的方法
Mar 30 #PHP
PHP实现动态创建XML文档的方法
Mar 30 #PHP
php实现微信模板消息推送
Mar 30 #PHP
You might like
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
jQuery 动态酷效果实现总结
2009/12/27 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Python中字符串与编码示例代码
2019/05/20 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
物业管理个人自我评价
2013/11/08 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
浅谈Node的内存泄露问题
2022/05/06 NodeJs