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

 更新时间:2018年03月31日 14:22:16   作者:_jan_  
这篇文章主要介绍了PHP实现基于PDO扩展连接PostgreSQL对象关系数据库,结合实例形式分析了php使用pdo连接PostgreSQL并执行简单sql语句的相关操作技巧,需要的朋友可以参考下

本文实例讲述了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基于pdo操作数据库技巧总结》、《php+Oracle数据库程序设计技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

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

相关文章

  • php遇到错误Call to undefined function ImageCreate()解决方法

    php遇到错误Call to undefined function ImageCreate()解决方法

    刚配置好服务器,运行php的时候提示Call to undefined function imagecreate错误,经过百度发现是php不支持gd库,linux服务器需要重新make,windows下比较简单了,下面是具体的方法
    2021-09-09
  • PHP自定义递归函数实现数组转JSON功能【支持GBK编码】

    PHP自定义递归函数实现数组转JSON功能【支持GBK编码】

    这篇文章主要介绍了PHP自定义递归函数实现数组转JSON功能,针对json_encode函数处理GBK编码中文出现乱码的情况,使用自定义函数进行数组递归遍历实现可兼容GBK编码的数组转json功能,需要的朋友可以参考下
    2018-07-07
  • discuz Passport 通行证 整合笔记

    discuz Passport 通行证 整合笔记

    上次整合discuz的passport,觉得简单,就没记下来,今天移动bbs的位置,以前整合的不能用,如何不用passport登陆论坛?!
    2008-06-06
  • PHP PDO操作MySQL基础教程

    PHP PDO操作MySQL基础教程

    这篇文章主要介绍了PHP PDO操作MySQL的方法,结合实例形式详细分析了php开启pdo及数据库创建、连接与增删改查相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • PHP接口多继承及tarits实现多继承效果的方法

    PHP接口多继承及tarits实现多继承效果的方法

    这篇文章主要介绍了PHP接口多继承及tarits实现多继承效果的方法,结合实例形式分析了php基于接口的多继承及PHP5.4中引入的tarits实现多继承功能简单操作技巧,需要的朋友可以参考下
    2018-01-01
  • 黑夜路人出的几道php笔试题

    黑夜路人出的几道php笔试题

    黑夜路人出的几道php笔试题,大家可以看看。
    2009-08-08
  • php中利用str_pad函数生成数字递增形式的产品编号

    php中利用str_pad函数生成数字递增形式的产品编号

    PHP开发项目中,在做产品编号时,客户反要求自动生成产品编号,格式如”QB00001″,数字递增形式
    2013-09-09
  • Ajax+PHP 边学边练之四 表单

    Ajax+PHP 边学边练之四 表单

    通过上一篇文章已经了解到如何利用Ajax和PHP对数据库进行数据读取,这样可以动态的获取到数据库的最新数据。本篇则继续介绍通过表单(Form)向数据库中写入数据。
    2009-11-11
  • php实现等比例压缩图片

    php实现等比例压缩图片

    这篇文章主要为大家详细介绍了php实现等比例压缩图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • PHP 采集程序原理分析篇

    PHP 采集程序原理分析篇

    由于需要,要写一个简单的PHP采集程序,照例是到网上找了一堆教程,然后照猫画虎,可是发现网上的教程全是似是而非,没有一个真正能用的。
    2010-03-03

最新评论