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程序设计有所帮助。