PDO类的封装
1. PDO类.rar
2. PHP代码
<?php /** * Created by tudou. * Date: 13-2-4 * Time: 下午9:57 */ /** 其他未实现的 1、绑定列到php变量请使用 $db->statement->bindColumn(1,$name); */ class pdo_class { private $pdo = null; public $statement = null; private $is_addsla = false; public $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ", ); public function __construct($host,$user="root",$pass="",$dbname="",$persistent=false,$charset="utf8"){ $this->options[PDO::MYSQL_ATTR_INIT_COMMAND] .= $charset; if($persistent){ $this->options[PDO::ATTR_PERSISTENT] = true; } $dsn = "mysql:host={$host};dbname={$dbname}"; $this->pdo = new PDO($dsn,$user,$pass,$this->options); } /** 全局属性设置,包括:列名格式和错误提示类型 可以使用数字也能直接使用参数 */ public function setAttr($param,$val=''){ if(is_array($param)){ foreach($param as $key=>$val){ $this->pdo->setAttribute($key,$val); } }else{ if($val!=''){ $this->pdo->setAttribute($param,$val); }else{ return false; } } } /** 生成一个编译好的sql语句模版 你可以使用 ? :name 的形式 返回一个statement对象 */ public function prepare($sql=""){ if($sql==""){ return false; } $this->statement = $this->pdo->prepare($sql); return $this->statement; } /** 执行Sql语句,一般用于 增、删、更新或者设置 返回影响的行数 */ public function exec($sql){ if($sql==""){ return false; } try{ return $this->pdo->exec($sql); }catch(Exception $e){ return $e->getMessage(); } } /** 执行有返回值的查询,返回PDOStatement 可以通过链式操作,可以通过这个类封装的操作获取数据 */ public function query($sql){ if($sql=""){ return false; } $this->statement = $this->pdo->query($sql); return $this->statement; } /** 开启事务 */ public function beginTA(){ return $this->pdo->beginTransaction(); } /** 提交事务 */ public function commit(){ return $this->pdo->commit(); } /** 事务回滚 */ public function rollBack(){ return $this->pdo->rollBack(); } public function lastInertId(){ return $db->lastInsertId(); } //** PDOStatement 类操作封装 **// /** 让模版执行SQL语句,1、执行编译好的 2、在执行时编译 */ public function execute($param=""){ if(is_array($param)){ try{ return $this->statement->execute($param); }catch (Exception $e){ //return $this->errorInfo(); return $e->getMessage(); } }else{ try{ return $this->statement->execute(); }catch(Exception $e){ /* 返回的错误信息格式 [0] => 42S22 [1] => 1054 [2] => Unknown column 'col' in 'field list' return $this->errorInfo(); */ return $e->getMessage(); } } } /** 参数1说明: PDO::FETCH_BOTH 也是默认的,两者都有(索引,关联) PDO::FETCH_ASSOC 关联数组 PDO::FETCH_NUM 索引 PDO::FETCH_OBJ 对象 PDO::FETCH_LAZY 对象 会附带queryString查询SQL语句 PDO::FETCH_BOUND 如果设置了bindColumn,则使用该参数 */ public function fetch($fetch_style=PDO::FETCH_BOTH){ if(is_object($this->statement)){ return $this->statement->fetch($fetch_style); }else{ return false; } } /** 参数1说明: PDO::FETCH_BOTH 也是默认的,两者都有(索引,关联) PDO::FETCH_ASSOC 关联数组 PDO::FETCH_NUM 索引 PDO::FETCH_OBJ 对象 PDO::FETCH_COLUMN 指定列 参数2可以指定要获取的列 PDO::FETCH_CLASS 指定自己定义的类 PDO::FETCH_FUNC 自定义类 处理返回的数据 PDO_FETCH_BOUND 如果你需要设置bindColumn,则使用该参数 参数2说明: 给定要处理这个结果的类或函数 */ public function fetchAll($fetch_style=PDO::FETCH_BOTH,$handle=''){ if($handle!=''){ return $this->statement->fetchAll($fetch_style,$handle); }else{ return $this->statement->fetchAll($fetch_style); } } /** 以对象形式返回 结果 跟fetch(PDO::FETCH_OBJ)一样 */ public function fetchObject($class_name){ if($clss_name!=''){ return $this->statement->fetchObject($class_name); }else{ return $this->statement->fetchObject(); } } /** public function bindColumn($array=array(),$type=EXTR_OVERWRITE){ if(count($array)>0){ extract($array,$type); } //$this->statement->bindColumn() } */ /** 以引用的方式绑定变量到占位符(可以只执行一次prepare,执行多次bindParam达到重复使用的效果) */ public function bindParam($parameter,$variable,$data_type=PDO::PARAM_STR,$length=6){ return $this->statement->bindParam($parameter,$variable,$data_type,$length); } /** 返回statement记录集的行数 */ public function rowCount(){ return $this->statement->rowCount(); } public function count(){ return $this->statement->rowCount(); } /** 关闭编译的模版 */ public function close(){ return $this->statement->closeCursor(); } public function closeCursor(){ return $this->statement->closeCursor(); } /** 返回错误信息也包括错误号 */ private function errorInfo(){ return $this->statement->errorInfo(); } /** 返回错误号 */ private function errorCode(){ return $this->statement->errorCode(); } //简化操作 public function insert($table,$data){ if(!is_array($data)){ return false; } $cols = array(); $vals = array(); foreach($data as $key=>$val){ $cols[]=$key; $vals[]="'".$this->addsla($val)."'"; } $sql = "INSERT INTO {$table} ("; $sql .= implode(",",$cols).") VALUES ("; $sql .= implode(",",$vals).")"; return $this->exec($sql); } public function update($table,$data,$where=""){ if(!is_array($data)){ return false; } $set = array(); foreach($data as $key=>$val){ $set[] = $key."='".trim($this->addsla($val))."'"; } $sql = "UPDATE {$table} SET "; $sql .= implode(",",$set); $sql .= " WHERE ".$where; return $this->exec($sql); } public function delete($table,$where=""){ $sql = "DELETE FROM {$table} WHERE ".$where; return $this->exec($sql); } private function addsla($data){ if($this->is_addsla){ return trim(addslashes($data)); } return $data; } }
以上就是PDO类的封装的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站4月17日消息,集邦咨询(TrendForce)近日发布报告,认为英伟达Blackwell新平台产品需求看涨,预估带动台积电2024年CoWoS封装总产能提升逾150%。英伟达Blackwell新平台产品包括B系列的GPU,以及整合英伟达自家GraceArmCPU的GB200加速卡等。集邦咨询确认为供应链当前非常看好GB200,预估2025年出货量有望超过百万片,在英伟达高端GPU中的占比达到40-50%。在英伟达计划下半年交付GB200以及B100等产品,但上游晶圆封装方面须进一步采用更复

本站7月9日消息,AMDZen5架构“Strix”系列处理器会有两种封装方案,其中较小的StrixPoint将采用FP8封装,而StrixHalo将会采用FP11封装。图源:videocardz消息源@Olrak29_最新曝料称StrixHalo的FP11封装尺寸为37.5mm*45mm(1687平方毫米),和英特尔AlderLake、RaptorLakeCPU的LGA-1700封装尺寸相同。AMD最新的PhoenixAPU采用FP8封装方案,尺寸为25*40mm,这意味着StrixHalo的F

Vue中Axios封装及其常用方法介绍Axios是一款基于Promise实现的HTTP库,它的优点在于具有良好的可读性、易用性以及可扩展性。Vue作为一款流行的前端框架,也对Axios提供了全面支持。本文将介绍如何在Vue中进行Axios封装,并且介绍Axios常用的一些方法。一、Axios封装在开发过程中,我们常常需要对Axios进行一些自定义的封装,例如

PHP中的封装技术及应用封装是面向对象编程中的一个重要概念,它指的是将数据和对数据的操作封装在一起,以便提供对外部程序的统一访问接口。在PHP中,封装可以通过访问控制修饰符和类的定义来实现。本文将介绍PHP中的封装技术及其应用场景,并提供一些具体的代码示例。一、封装的访问控制修饰符在PHP中,封装主要通过访问控制修饰符来实现。PHP提供了三个访问控制修饰符,

通过封装代码,C++函数可以提高GUI开发效率:代码封装:函数将代码分组到独立单元,使代码易于理解和维护。可重用性:函数可创建通用功能供应用程序中重复使用,减少重复编写和错误。简洁代码:封装代码使主逻辑简洁,便于阅读和调试。

如何在Go语言中实现封装和继承封装和继承是面向对象编程中的两个重要概念,它们可以使代码更加模块化和可维护,同时也为代码的复用提供了便利。本文将介绍在Go语言中如何实现封装和继承,并提供相应的代码示例。封装封装是将数据和功能进行封装,隐藏实现的细节,只暴露必要的接口给外部使用。在Go语言中,封装是通过导出和非导出标识符来实现的。首字母大写的标识符可以被其他包访

PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块摘要:在开发中,经常遇到需要重复使用的代码块。为了提高代码的可维护性和可重用性,我们可以使用类和对象的封装技巧来对这些代码块进行封装。本文将介绍如何使用类和对象封装可重复使用的代码块,并提供几个具体的代码示例。使用类和对象的封装优势使用类和对象的封装有以下几个优势:1.1提高代码的可维护性通过将重复

本站7月11日消息,经济日报今天(7月11日)报道,富士康集团已进军先进封装领域,重点布局时下主流的面板级扇出封装(FOPLP)半导体方案。1.继旗下群创光电(Innolux)之后,富士康集团投资的夏普(Sharp)也宣布进军日本面板级扇出式封装领域,预计将于2026年投产。富士康集团在AI领域本身就有足够的影响力,而补上先进封装短板之后让其可以提供“一条龙”服务,便于后续接受更多的AI产品订单。本站查询公开资料,富士康集团目前持有夏普10.5%的股权,该集团表示现阶段不会增持,也不会减持,将维


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境