打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
pdo 帮助类 pdo class php 数据库 处理层 pdo dbhelper
  1. <?php  
  2. define("DB_SERVER","127.0.0.1");  
  3. define("DB_PORT",3306);  
  4. define("DB_CATALOG","test");  
  5. define("DB_USERID","root");  
  6. define("DB_PASSWORD","");  
  7. class DAL {  
  8.     private static $__queries=0;  
  9.     private static $__PDO=null;  
  10.     private static function connect() {  
  11.         if(isset(self::$__PDO))return;  
  12.         try {  
  13.             $dsn="mysql:host=".DB_SERVER.";port=".DB_PORT.";dbname=".DB_CATALOG;  
  14.             self::$__PDO=new PDO($dsn, DB_USERID, DB_PASSWORD);  
  15.         } catch(PDOException $e) {  
  16.             raiseError($e);  
  17.         }  
  18.     }  
  19.     /** 
  20.      * 
  21.      * @param <type> $sql 
  22.      * @param <type> $params 
  23.      * @return <type> $stmt 
  24.      * 
  25.      * 
  26.      * $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); 
  27.      * $stmt->bindParam(1, $name); 
  28.      * $stmt->bindParam(2, $value); 
  29.      * // insert one row 
  30.      * $name = 'one'; 
  31.      * $value = 1; 
  32.      * $stmt->execute(); 
  33.      * 
  34.      * $sql = "select * from SampleMarry where UserId=?"; 
  35.      * $arr[0] = $userId; 
  36.      * return DAL::getall($sql,$arr); 
  37.      */  
  38.     private static function execute($sql,$params) {  
  39.         self::connect();  
  40.         try {  
  41.             $stmt=self::$__PDO->prepare($sql);  
  42.             if($params!==null) {  
  43.                 if(is_array($params) || is_object($params)) {  
  44.                     $i=1;  
  45.                     foreach($params as $param) {  
  46.                         $stmt->bindValue($i++,$param);  
  47.                     }  
  48.                 } else {  
  49.                     $stmt->bindValue(1,$params);  
  50.                 }  
  51.             }  
  52.             if($stmt->execute()) {  
  53.                 self::$__queries++;  
  54.                 return $stmt;  
  55.             } else {  
  56.                 $err=$stmt->errorInfo();  
  57.                 throw new PDOException($err[2],$err[1]);  
  58.             }  
  59.         } catch(PDOException $e) {  
  60.             raiseError($e);  
  61.         }  
  62.     }  
  63.     /************************************************************************ 
  64.     public function start 
  65.     ************************************************************************/  
  66.     //for insert start  
  67.     public static function insert($sql,$params=null) {  
  68.         $stmt=self::execute($sql,$params);  
  69.         return self::$__PDO->lastInsertId();  
  70.     }  
  71.     /** 
  72.      * 
  73.      * @param <type> $table 
  74.      * @param <type> $entity 
  75.      * @return <type> 
  76.         $data=new stdClass; 
  77.         $data->SampleBook_Id=$bookid; 
  78.         $data->UserId=$userId; 
  79.         $data->EducationType="School"; 
  80.         $data->Name=$scoolname; 
  81.         $data->Subject=""; 
  82.         $data->AttendedDate=strtotime($startdate); 
  83.         $data->FinishedDate=strtotime($enddate); 
  84.         return DAL::createRecord("SampleEducation",$item); 
  85.      */  
  86.     public static function createRecord($table,$entity) {  
  87.         $f=array();  
  88.         $v=array();  
  89.         $c=0;  
  90.         foreach($entity as $prop=>$val) {  
  91.             $f[]=$prop;  
  92.             $v[]=$val;  
  93.             $c++;  
  94.         }  
  95.         $sql="INSERT INTO $table (".implode(",",$f).") VALUES(".trim(str_repeat('?,',$c),",").")";  
  96.         return self::insert($sql,$v);  
  97.     }  
  98.     //for insert end  
  99.     //for delete start  
  100.     /** 
  101.      * 
  102.      * @param <type> $sql 
  103.      * @param <type> $params 
  104.      * @return <type> 
  105.         $sql="delete from SampleLived where id=?"; 
  106.         $arr[] = $id; 
  107.         DAL::delete($sql,$arr); 
  108.      */  
  109.     public static function delete($sql,$params=null) {  
  110.         $stmt=self::execute($sql,$params);  
  111.         return $stmt->rowCount();  
  112.     }  
  113.     public static function remove($sql,$params=null) {  
  114.         $stmt=self::execute($sql,$params);  
  115.         return $stmt->rowCount();  
  116.     }  
  117.     //for delete end  
  118.     //for update start  
  119.     public static function update($sql,$params=null) {  
  120.         $stmt=self::execute($sql,$params);  
  121.         return $stmt->rowCount();  
  122.     }  
  123.     public static function updateRecord($table,$entity,$pkdfiledname) {  
  124.         $f=array();  
  125.         $v=array();  
  126.         foreach($entity as $prop=>$val) {  
  127.             if($prop==$pkdfiledname)continue;  
  128.             $f[]=$prop."=?";  
  129.             $v[]=$val;  
  130.         }  
  131.         $v[]=$entity->$pkdfiledname;  
  132.         $sql="UPDATE $table SET ".trim(implode(',',$f),',')." WHERE $pkdfiledname=?";  
  133.         return self::update($sql,$v);  
  134.     }  
  135.     //for update end  
  136.     //for query start  
  137.     public static function query($sql,$params=null) {  
  138.         $stmt=self::execute($sql,$params);  
  139.         return new DBRecordset($stmt);  
  140.     }  
  141.     public static function getOne($sql,$params=null) {  
  142.         $stmt=self::execute($sql,$params);  
  143.         return $stmt->fetchColumn();  
  144.     }  
  145.     public static function getRow($sql,$params=null) {  
  146.         $stmt=self::execute($sql,$params);  
  147.         return $stmt->fetch(PDO::FETCH_OBJ);  
  148.     }  
  149.     public static function getall($sql,$params=null) {  
  150.         $stmt=self::execute($sql,$params);  
  151.         return $stmt->fetchAll(PDO::FETCH_ASSOC);  
  152.     }  
  153.     //for query end  
  154.     //for Transaction start  
  155.     public static function beginTransaction() {  
  156.         return self::$__PDO->beginTransaction();  
  157.     }  
  158.     public static function rollBack() {  
  159.         return self::$__PDO->rollBack();  
  160.     }  
  161.     public static function commit() {  
  162.         return self::$__PDO->commit();  
  163.     }  
  164.     //for Transaction end  
  165.     public static function pagination($countSql,$selectSql,$params,&$pageNow,$pageSize,&$count) {  
  166.         if($pageNow<=0)$pageNow=1;  
  167.         $count=self::getOne($countSql,$params);  
  168.         $pageCount=ceil($count/$pageSize);  
  169.         if($pageNow>$pageCount)$pageNow=$pageCount;  
  170.         if($pageNow<=0)$pageNow=1;  
  171.         $offset=($pageNow-1)*$pageSize;  
  172.         $sql=$selectSql.' LIMIT '.$offset.','.$pageSize;  
  173.         return self::query($sql,$params);  
  174.     }  
  175.     /************************************************************************ 
  176.     public function end 
  177.     ************************************************************************/  
  178. }  
  179. class DBRecordset {  
  180.     private $PDOStatement;  
  181.     public function __construct(&$stmt) {  
  182.         $this->PDOStatement=&$stmt;  
  183.         $this->PDOStatement->setFetchMode(PDO::FETCH_OBJ);  
  184.     }  
  185.     public function next() {  
  186.         return $this->PDOStatement->fetch();  
  187.     }  
  188.     public function count() {  
  189.         //for mysql PDOStatement will return the number of rows in the resultset  
  190.         return $this->PDOStatement->rowCount();  
  191.     }  
  192.     public function getAllRows() {  
  193.         return $this->PDOStatement->fetchAll();  
  194.     }  
  195.     public function columnCount() {  
  196.         return $this->PDOStatement->columnCount();  
  197.     }  
  198.     public function free() {  
  199.         $this->PDOStatement=null;  
  200.     }  
  201.     public function __destruct() {  
  202.         $this->free();  
  203.     }  
  204. }  
  205. ?>  
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
xp下php用PDO连接sqlserver 2008
php无限极分类
35W双C口方案 软件版JD6621 2C可灵活设定PDO,同插退5V方案
柿子产季大幅下降
php连接SQLite数据库
devcon驱动安装即插即用非即插即用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服