PHP PDO 데이터베이스 작업 클래스
간단한 PDO 클래스 패키지입니다. . 학습 및 의사소통 전용
PdoDb 데이터베이스 클래스
<?php /** * @throws Error * PDO数据库 */ class PdoDb extends DatabaseAbstract { /** * PDO实例 * @var PDO */ protected $DB; /** * PDO准备语句 * @var PDOStatement */ protected $Stmt; /** * 最后的SQL语句 * @var string */ protected $Sql; /** * 配置信息 $config=array('dsn'=>xxx,'name'=>xxx,'password'=>xxx,'option'=>xxx) * @var array */ protected $Config; /** * 构造函数 * @param array $config */ public function __construct($config) { $this->Config = $config; } /** * 连接数据库 * @return void */ public function connect() { $this->DB = new PDO($this->Config['dsn'], $this->Config['name'], $this->Config['password'], $this->Config['option']); //默认把结果序列化成stdClass $this->DB->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); //自己写代码捕获Exception $this->DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); } /** * 断开连接 * @return void */ public function disConnect() { $this->DB = null; $this->Stmt = null; } /** * 执行sql,返回新加入的id * @param string $statement * @return string */ public function exec($statement) { if ($this->DB->exec($statement)) { $this->Sql = $statement; return $this->lastId(); } $this->errorMessage(); } /** * 查询sql * @param string $statement * @return PdoDb */ public function query($statement) { $res = $this->DB->query($statement); if ($res) { $this->Stmt = $res; $this->Sql = $statement; return $this; } $this->errorMessage(); } /** * 序列化一次数据 * @return mixed */ public function fetchOne() { return $this->Stmt->fetch(); } /** * 序列化所有数据 * @return array */ public function fetchAll() { return $this->Stmt->fetchAll(); } /** * 最后添加的id * @return string */ public function lastId() { return $this->DB->lastInsertId(); } /** * 影响的行数 * @return int */ public function affectRows() { return $this->Stmt->rowCount(); } /** * 预备语句 * @param string $statement * @return PdoDb */ public function prepare($statement) { $res = $this->DB->prepare($statement); if ($res) { $this->Stmt = $res; $this->Sql = $statement; return $this; } $this->errorMessage(); } /** * 绑定数据 * @param array $array * @return PdoDb */ public function bindArray($array) { foreach ($array as $k => $v) { if (is_array($v)) { //array的有效结构 array('value'=>xxx,'type'=>PDO::PARAM_XXX) $this->Stmt->bindValue($k + 1, $v['value'], $v['type']); } else { $this->Stmt->bindValue($k + 1, $v, PDO::PARAM_STR); } } return $this; } /** * 执行预备语句 * @return bool */ public function execute() { if ($this->Stmt->execute()) { return true; } $this->errorMessage(); } /** * 开启事务 * @return bool */ public function beginTransaction() { return $this->DB->beginTransaction(); } /** * 执行事务 * @return bool */ public function commitTransaction() { return $this->DB->commit(); } /** * 回滚事务 * @return bool */ public function rollbackTransaction() { return $this->DB->rollBack(); } /** * 抛出错误 * @throws Error * @return void */ public function errorMessage() { $msg = $this->DB->errorInfo(); throw new Error('数据库错误:' . $msg[2]); } //--------------------- /** * 单例实例 * @var PdoDb */ protected static $_instance; /** * 默认数据库 * @static * @param array $config * @return PdoDb */ public static function instance($config) { if (!self::$_instance instanceof PdoDb) { self::$_instance = new PdoDb($config); self::$_instance->connect(); } return self::$_instance; } //---------------------- /** * 获取PDO支持的数据库 * @static * @return array */ public static function getSupportDriver(){ return PDO::getAvailableDrivers(); } /** * 获取数据库的版本信息 * @return array */ public function getDriverVersion(){ $name = $this->DB->getAttribute(PDO::ATTR_DRIVER_NAME); return array($name=>$this->DB->getAttribute(PDO::ATTR_CLIENT_VERSION)); } }
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
3 몇 주 전
By DDD
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
2 몇 주 전
By DDD
Atomfall에서 크레인 제어 키 카드를 찾을 수 있습니다
3 몇 주 전
By DDD
R.E.P.O. 저축 설명 (및 파일 저장)
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 섀도우 - 대장장이를 찾고 무기 및 갑옷 커스터마 화 잠금 해제 방법
4 몇 주 전
By DDD

뜨거운 도구

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

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

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

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

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

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7563
15


Cakephp 튜토리얼
1385
52


Steam의 계정 이름 형식은 무엇입니까?
84
11


Win11 활성화 키 영구
61
19


NYT 연결 힌트와 답변
28
99

