PDO类的封装
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)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









4월 17일 이 사이트의 뉴스에 따르면 TrendForce는 최근 Nvidia의 새로운 Blackwell 플랫폼 제품에 대한 수요가 강세를 보이고 있으며, 이로 인해 TSMC의 전체 CoWoS 패키징 생산 능력이 2024년에 150% 이상 증가할 것으로 예상된다는 보고서를 발표했습니다. NVIDIA Blackwell의 새로운 플랫폼 제품에는 B 시리즈 GPU와 NVIDIA 자체 GraceArm CPU를 통합한 GB200 가속기 카드가 포함됩니다. TrendForce는 현재 공급망이 GB200에 대해 매우 낙관적이며, 출하량이 2025년에 100만 개를 초과할 것으로 예상되며 이는 Nvidia 고급 GPU의 40~50%를 차지할 것으로 확인했습니다. 엔비디아는 하반기에 GB200, B100 등의 제품을 출시할 계획이지만, 업스트림 웨이퍼 패키징에는 더욱 복잡한 제품을 채택해야 합니다.

이 웹사이트는 7월 9일에 AMD Zen5 아키텍처 "Strix" 시리즈 프로세서에 두 가지 패키징 솔루션이 있을 것이라고 보고했습니다. 더 작은 StrixPoint는 FP8 패키지를 사용하고 StrixHalo는 FP11 패키지를 사용합니다. 출처: videocardz 출처 @Olrak29_ 최근 밝혀진 바에 따르면 StrixHalo의 FP11 패키지 크기는 37.5mm*45mm(1687제곱밀리미터)로 Intel의 AlderLake 및 RaptorLake CPU의 LGA-1700 패키지 크기와 동일합니다. AMD의 최신 Phoenix APU는 25*40mm 크기의 FP8 패키징 솔루션을 사용합니다. 이는 StrixHalo의 F가

PHP의 캡슐화 기술과 애플리케이션 캡슐화는 객체 지향 프로그래밍에서 중요한 개념입니다. 이는 외부 프로그램에 대한 통합 액세스 인터페이스를 제공하기 위해 데이터와 데이터에 대한 작업을 함께 캡슐화하는 것을 의미합니다. PHP에서는 액세스 제어 수정자와 클래스 정의를 통해 캡슐화를 달성할 수 있습니다. 이 기사에서는 PHP의 캡슐화 기술과 해당 애플리케이션 시나리오를 소개하고 몇 가지 구체적인 코드 예제를 제공합니다. 1. 캡슐화된 액세스 제어 수정자 PHP에서 캡슐화는 주로 액세스 제어 수정자를 통해 이루어집니다. PHP는 세 가지 액세스 제어 수정자를 제공합니다.

Vue의 Axios 캡슐화 및 일반적인 방법 소개 Axios는 Promise를 기반으로 한 HTTP 라이브러리로 가독성, 사용 용이성 및 확장성이 뛰어나다는 장점이 있습니다. 널리 사용되는 프런트엔드 프레임워크인 Vue는 Axios에 대한 완벽한 지원도 제공합니다. 이 기사에서는 Vue에서 Axios를 캡슐화하는 방법을 소개하고 일반적으로 사용되는 Axios 방법을 소개합니다. 1. Axios 캡슐화 개발 과정에서 우리는 종종 다음과 같은 Axios의 맞춤형 캡슐화를 수행해야 합니다.

C++ 함수는 코드를 캡슐화함으로써 GUI 개발 효율성을 향상시킬 수 있습니다. 코드 캡슐화: 함수는 코드를 독립적인 단위로 그룹화하여 코드를 더 쉽게 이해하고 유지 관리할 수 있도록 합니다. 재사용성: 함수는 애플리케이션 전체에서 재사용할 수 있는 공통 기능을 생성하여 중복과 오류를 줄입니다. 간결한 코드: 캡슐화된 코드는 기본 논리를 간결하고 쉽게 읽고 디버깅할 수 있도록 만듭니다.

Go 언어에서 캡슐화 및 상속을 구현하는 방법 캡슐화 및 상속은 객체 지향 프로그래밍에서 두 가지 중요한 개념으로, 코드를 보다 모듈화하고 유지 관리하기 쉽게 만들고 코드 재사용을 위한 편의성을 제공합니다. 이 글에서는 Go 언어로 캡슐화와 상속을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 캡슐화 캡슐화는 데이터와 기능을 캡슐화하고, 구현 세부 사항을 숨기고, 외부 사용을 위해 필요한 인터페이스만 노출하는 것입니다. Go 언어에서는 내보낸 식별자와 내보내지 않은 식별자를 통해 캡슐화가 이루어집니다. 대문자로 된 식별자는 다른 패키지에서 접근 가능

Python은 고급 프로그래밍 언어로서 데이터 분석, 기계 학습, 웹 개발 및 기타 분야에서 널리 사용됩니다. 그러나 코드의 크기가 계속해서 확장되면서 Python 프로그램의 확장성 문제가 점차 명백해집니다. 확장성 오류는 Python 프로그램이 특정 상황에서 요구 사항 변화에 잘 적응할 수 없고 대규모 데이터를 처리할 수 없어 프로그램 성능이 저하된다는 것을 의미합니다. 너무 많은 종속성, 열악한 코드 구조, 문서 부족 등은 모두 Python 프로그램의 확장성 오류의 원인입니다.

11일 본 사이트의 소식에 따르면, 경제일보는 오늘(11일) 폭스콘그룹이 현재 주류인 패널레벨팬아웃패키징(FOPLP) 반도체 솔루션을 중심으로 첨단 패키징 분야에 진출했다고 보도했다. 1. 자회사 이노룩스에 이어 폭스콘그룹이 투자한 샤프도 일본 패널급 팬아웃 패키징 분야 진출을 발표해 2026년 생산에 들어갈 예정이다. 폭스콘 그룹 자체가 AI 분야에서 충분한 영향력을 갖고 있고, 첨단 패키징의 단점을 보완해 향후 더 많은 AI 제품 주문 수용을 촉진하는 '원스톱' 서비스를 제공할 수 있다. 이 사이트에서 참조한 공개 정보에 따르면 폭스콘 그룹은 현재 샤프 지분 10.5%를 보유하고 있으며 현 단계에서는 지분을 늘리거나 줄이지 않고 그대로 유지할 것이라고 밝혔습니다.
