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 相关文章推荐
自动跳转中英文页面
Oct 09 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
浅谈php冒泡排序
Dec 30 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
thinkphp实现附件上传功能
May 26 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 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中将数组转成XML格式的实现代码
2011/08/08 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
jquery编写日期选择器
2017/03/16 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
Python实现的栈(Stack)
2018/01/26 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
从0开始的Python学习016异常
2019/04/08 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python缩进长度是否统一
2020/08/02 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
英语教师求职信
2014/06/16 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
新员工试用期自我评价
2015/03/10 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
python中 Flask Web 表单的使用方法
2022/05/20 Python