当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-06 10:12:46 浏览: 评论:0 

这篇文章主要介绍了PHP实现基于PDO扩展连接PostgreSQL对象关系数据库,结合实例形式分析了php使用pdo连接PostgreSQL并执行简单sql语句的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现基于PDO扩展连接PostgreSQL对象关系数据库的方法,分享给大家供大家参考,具体如下:

  1. $pdo = NULL; 
  2. if(version_compare(PHP_VERSION, '5.3.6''<')){ 
  3.   $pdo = new \PDO('pgsql:host=127.0.0.1;port=5432;dbname=postgredb1','postgres',"123456",array(\PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES \'UTF8\'' )); 
  4. else
  5.   $pdo = new \PDO('pgsql:host=127.0.0.1;port=5432;dbname=postgredb1','postgres',"123456"); 
  6. try { 
  7.   $pdo->beginTransaction(); 
  8.   $tableName = 'user'
  9.   if($fetch = true){ 
  10.     $myPDOStatement = $pdo->prepare("SELECT * FROM " . $tableName . " WHERE id=:id "); 
  11.     if(!$myPDOStatement) { 
  12.       $errorInfo = $myPDOStatement->errorInfo(); 
  13.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  14.     } 
  15.     $id = 1; 
  16.     $myPDOStatement->bindParam(":id",$id); 
  17.     $myPDOStatement->execute(); 
  18.     if($myPDOStatement->errorCode()>0){ 
  19.       $errorInfo = $myPDOStatement->errorInfo(); 
  20.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  21.     } 
  22.     $item = $myPDOStatement->fetch(); 
  23.     print_r($item); 
  24.   } 
  25.   $insertedId = 0; 
  26.   if($insert = true){ 
  27.     $myPDOStatement = $pdo->prepare("INSERT INTO " . $tableName . "(username,password,status)  VALUES(:username,:password,:status)"); 
  28.     if(!$myPDOStatement) { 
  29.       $errorInfo = $myPDOStatement->errorInfo(); 
  30.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  31.     } 
  32.     $timestamp = time(); 
  33.     $data = array
  34.       'username' =>'usernamex'
  35.       'password' =>'passwordx'
  36.       'status' =>'1'
  37.     ); 
  38.     $myPDOStatement->bindParam(":username",$data['username']); 
  39.     $myPDOStatement->bindParam(":password",$data['password']); 
  40.     $myPDOStatement->bindParam(":status",$data['status']); 
  41.     $myPDOStatement->execute(); 
  42.     if($myPDOStatement->errorCode()>0){ 
  43.       $errorInfo = $myPDOStatement->errorInfo(); 
  44.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  45.     } 
  46.     $affectRowCount = $myPDOStatement->rowCount(); 
  47.     if($affectRowCount>0){ 
  48.       $insertedId = $pdo->lastInsertId(); 
  49.     } 
  50.     print_r('$insertedId = '.$insertedId);//PostgreSQL不支持 
  51.     print_r('$affectRowCount = '.$affectRowCount); 
  52.   } 
  53.   if($update = true){ 
  54.     $myPDOStatement = $pdo->prepare("UPDATE " . $tableName . " SET username=:username, status=:status WHERE id=:id"); 
  55.     if(!$myPDOStatement) { 
  56.       $errorInfo = $myPDOStatement->errorInfo(); 
  57.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  58.     } 
  59.     $id = 1; 
  60.     $username = 'username update'
  61.     $status = 0; 
  62.     $myPDOStatement->bindParam(":id",$id); 
  63.     $myPDOStatement->bindParam(":username",$username); 
  64.     $myPDOStatement->bindParam(":status",$status); 
  65.     $myPDOStatement->execute(); 
  66.     if($myPDOStatement->errorCode()>0){ 
  67.       $errorInfo = $myPDOStatement->errorInfo(); 
  68.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  69.     } 
  70.     $affectRowCount = $myPDOStatement->rowCount(); 
  71.     print_r('$affectRowCount = '.$affectRowCount); 
  72.   } 
  73.   if($fetchAll = true){ 
  74.     $myPDOStatement = $pdo->prepare("SELECT * FROM " . $tableName ." WHERE id > :id"); 
  75.     if(!$myPDOStatement) { 
  76.       $errorInfo = $myPDOStatement->errorInfo(); 
  77.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  78.     } 
  79.     $id = 0; 
  80.     $myPDOStatement->bindParam(":id",$id); 
  81.     $myPDOStatement->execute(); 
  82.     if($myPDOStatement->errorCode()>0){ 
  83.       $errorInfo = $myPDOStatement->errorInfo(); 
  84.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  85.     } 
  86.     $list = $myPDOStatement->fetchAll(); 
  87.     print_r($list); 
  88.   } 
  89.   if($update = true){ 
  90.     $myPDOStatement = $pdo->prepare("DELETE FROM " . $tableName . " WHERE id=:id"); 
  91.     if(!$myPDOStatement) { 
  92.       $errorInfo = $myPDOStatement->errorInfo(); 
  93.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  94.     } 
  95.     //$insertedId = 10; 
  96.     $myPDOStatement->bindParam(":id",$insertedId); 
  97.     $myPDOStatement->execute(); 
  98.     if($myPDOStatement->errorCode()>0){ 
  99.       $errorInfo = $myPDOStatement->errorInfo(); 
  100.       throw new \Exception($errorInfo[0].'###'.$errorInfo[1].'###'.$errorInfo[2]); 
  101.     } 
  102.     $affectRowCount = $myPDOStatement->rowCount(); 
  103.     print_r('$affectRowCount = '.$affectRowCount); 
  104.   } 
  105.   $pdo->commit(); 
  106. } catch (\Exception $e) { 
  107.   $pdo->rollBack(); 
  108. //     print_r($e); 
  109. $pdo = null;

Tags: PDO PostgreSQL

分享到: