当前位置:首页 > PHP教程 > PHP高级教程

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

本文实例讲述了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程序设计有所帮助。


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!