文章詳情頁
php實現pdo數據庫操作類過程詳解
瀏覽:34日期:2022-06-06 10:20:57
目錄
- 數據庫操作類的優點
- 代碼
- 調用
- 數據庫表格結構
- SQL
數據庫操作類的優點
優點可以說是非常多了,常見的優點就是便于維護、復用、高效、安全、易擴展。例如PDO支持的數據庫類型是非常多的,與mysqli不同的就是,PDO還支持其他數據庫,一套寫法多種數據庫的匹配,而mysqli僅僅是支持mysql。
代碼
Db.php
<?php/** * 數據庫的基本操作 */class Db{ // 數據庫的默認連接參數 private $dbConfig=["db"=>"mysql", // 數據庫類型"host"=>"localhost", // 主機名稱"port"=>"3306", // 默認端口"user"=>"root", // 用戶名"pass"=>"root", // 密碼"charset"=>"utf8", // 默認字符集"dbname"=>"edu", // 默認數據庫 ]; // 新增主鍵id public $insertId = null; // 受影響的記錄 public $num = 0; // 單例模式,本類的實例 private static $instance = null; // 數據庫的連接 private $conn = null; /** * Db構造方法 * 私有化以防止外部實例化 */ private function __construct($params=[]) {// 初始化連接參數$this->dbConfig = array_merge($this->dbConfig,$params);// 連接數據庫$this->connect(); } /** * 禁止外部克隆該實例 */ private function __clone() {// TODO:Implement __clone() method. } /** * 獲取當前類的單一實例 */ public static function getInstance($params=[]) {if (!self::$instance instanceof self) { self::$instance = new self($params);}return self::$instance; } private function connect() {try{ // 配置數據源DSN $dsn = "{$this->dbConfig["db"]}:host={$this->dbConfig["host"]};port={$this->dbConfig["port"]};dbname={$this->dbConfig["dbname"]};charset={$this->dbConfig["charset"]}"; // 創建PDO對象 $this->conn = new PDO($dsn,$this->dbConfig["user"],$this->dbConfig["pass"]); // 設置客戶端字符集 $this->conn->query("SET NAMES {$this->dbConfig["charset"]}");}catch (PDOException $e){ die("數據庫連接失敗".$e->getMessage());} } /** * 完成數據表的操作:CURD */ public function exec($sql) {$num = $this->conn->exec($sql);// 如果有受影響的記錄if($num > 0){ // 如果是新增操作,初始化新增主鍵id屬性 if(null !==$this->conn->lastInsertId()){$this->insertId = $this->conn->lastInsertId(); } $this->num = $num; // 返回受影響的記錄}else{ $error = $this->conn->errorInfo(); // 獲取最后操作錯誤信息的數組 var_dump($error);} } // 獲取單條查詢結果 public function fetch($sql) {return $this->conn->query($sql)->fetch(PDO::FETCH_ASSOC); } // 獲取多條查詢結果 public function fetchAll($sql) {return $this->conn->query($sql)->fetchAll(PDO::FETCH_ASSOC); }}?>
調用
Demo.php
<?php/** * Db類測試 */require "Db.php";// 獲取Db類實例$db = Db::getInstance();// 新增操作// $sql = "INSERT student SET name="張一鳴",email="ByteDance@qq.com",grade="59",course="golang"";// $db->exec($sql);// echo "成功插入了".$db->num."條記錄,主鍵id是".$db->insertId;// 刪除操作// $sql = "DELETE FROM student WHERE id="4"";// $db->exec($sql);// echo "成功刪除了".$db->num."條記錄";// 更新操作// $sql = "UPDATE student SET grade="1199" WHERE id="1"";// $db->exec($sql);// echo "成功更新了".$db->num."條記錄";// 查詢單條操作// $sql = "SELECT id,name,email,grade FROM student WHERE grade < "60"";// $row = $db->fetch($sql);// var_dump($row);// // 查詢多條操作// $sql = "SELECT id,name,email,grade FROM student WHERE grade > "80"";// $rows = $db->fetchAll($sql);// var_dump($rows);?>
數據庫表格結構
SQL
全選下面的SQL語句粘貼至數據庫管理工具的SQL執行框進行執行即可快速創建測試數據庫。
-- phpMyAdmin SQL Dump-- version 4.8.5-- https://www.phpmyadmin.net/---- 主機: localhost-- 生成日期: 2022-08-08 10:46:35-- 服務器版本: 5.7.26-- PHP 版本: 7.3.4SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";SET AUTOCOMMIT = 0;START TRANSACTION;SET time_zone = "+00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8mb4 */;---- 數據庫: `edu`---- ------------------------------------------------------------ 表的結構 `student`--CREATE TABLE `student` ( `id` int(11) NOT NULL, `name` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `email` text COLLATE utf8_unicode_ci NOT NULL, `grade` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `course` varchar(32) COLLATE utf8_unicode_ci NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;---- 轉存表中的數據 `student`--INSERT INTO `student` (`id`, `name`, `email`, `grade`, `course`) VALUES(1, "王興", "meituan@qq.com", "80", "ruby"),(2, "黃崢", "pdd@qq.com", "68", "mysql"),(6, "李彥宏", "baidu@qq.com", "95", "python"),(5, "馬云", "mayun@qq.com", "88", "php"),(7, "劉強東", "jd@qq.com", "76", "C++"),(8, "馬化騰", "10001@qq.com", "59", "java"),(9, "張一鳴", "ByteDance@qq.com", "77", "golang");---- 轉儲表的索引------ 表的索引 `student`--ALTER TABLE `student` ADD PRIMARY KEY (`id`);---- 在導出的表使用AUTO_INCREMENT------ 使用表AUTO_INCREMENT `student`--ALTER TABLE `student` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;COMMIT;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
到此這篇關于php實現pdo數據庫操作類過程詳解的文章就介紹到這了,更多相關php pdo數據庫操作內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
標簽:
PHP
排行榜
