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=>'SETNAMES\'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."WHEREid=:id"); if(!$myPDOStatement){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } $id=1; $myPDOStatement->bindParam(":id",$id); $myPDOStatement->execute(); if($myPDOStatement->errorCode()>0){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } $item=$myPDOStatement->fetch(); print_r($item); } $insertedId=0; if($insert=true){ $myPDOStatement=$pdo->prepare("INSERTINTO".$tableName."(username,password,status)VALUES(:username,:password,:status)"); if(!$myPDOStatement){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\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(); thrownew\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."SETusername=:username,status=:statusWHEREid=:id"); if(!$myPDOStatement){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } $id=1; $username='usernameupdate'; $status=0; $myPDOStatement->bindParam(":id",$id); $myPDOStatement->bindParam(":username",$username); $myPDOStatement->bindParam(":status",$status); $myPDOStatement->execute(); if($myPDOStatement->errorCode()>0){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } $affectRowCount=$myPDOStatement->rowCount(); print_r('$affectRowCount='.$affectRowCount); } if($fetchAll=true){ $myPDOStatement=$pdo->prepare("SELECT*FROM".$tableName."WHEREid>:id"); if(!$myPDOStatement){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } $id=0; $myPDOStatement->bindParam(":id",$id); $myPDOStatement->execute(); if($myPDOStatement->errorCode()>0){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } $list=$myPDOStatement->fetchAll(); print_r($list); } if($update=true){ $myPDOStatement=$pdo->prepare("DELETEFROM".$tableName."WHEREid=:id"); if(!$myPDOStatement){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); } //$insertedId=10; $myPDOStatement->bindParam(":id",$insertedId); $myPDOStatement->execute(); if($myPDOStatement->errorCode()>0){ $errorInfo=$myPDOStatement->errorInfo(); thrownew\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程序设计有所帮助。