国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

php實(shí)現(xiàn)pdo數(shù)據(jù)庫操作類過程詳解

瀏覽:39日期:2022-06-06 10:20:57
目錄
  • 數(shù)據(jù)庫操作類的優(yōu)點(diǎn)
  • 代碼
  • 調(diào)用
  • 數(shù)據(jù)庫表格結(jié)構(gòu)
  • SQL

數(shù)據(jù)庫操作類的優(yōu)點(diǎn)

優(yōu)點(diǎn)可以說是非常多了,常見的優(yōu)點(diǎn)就是便于維護(hù)、復(fù)用、高效、安全、易擴(kuò)展。例如PDO支持的數(shù)據(jù)庫類型是非常多的,與mysqli不同的就是,PDO還支持其他數(shù)據(jù)庫,一套寫法多種數(shù)據(jù)庫的匹配,而mysqli僅僅是支持mysql。

代碼

Db.php

<?php/** * 數(shù)據(jù)庫的基本操作 */class Db{    // 數(shù)據(jù)庫的默認(rèn)連接參數(shù)    private $dbConfig=["db"=>"mysql", // 數(shù)據(jù)庫類型"host"=>"localhost", // 主機(jī)名稱"port"=>"3306", // 默認(rèn)端口"user"=>"root", // 用戶名"pass"=>"root", // 密碼"charset"=>"utf8", // 默認(rèn)字符集"dbname"=>"edu", // 默認(rèn)數(shù)據(jù)庫    ];    // 新增主鍵id    public $insertId = null;    // 受影響的記錄    public $num = 0;    // 單例模式,本類的實(shí)例    private static $instance = null;    // 數(shù)據(jù)庫的連接    private $conn = null;    /**     * Db構(gòu)造方法     * 私有化以防止外部實(shí)例化     */    private function __construct($params=[])    {// 初始化連接參數(shù)$this->dbConfig = array_merge($this->dbConfig,$params);// 連接數(shù)據(jù)庫$this->connect();    }    /**     * 禁止外部克隆該實(shí)例     */    private function __clone()    {// TODO:Implement __clone() method.    }    /**     * 獲取當(dāng)前類的單一實(shí)例     */    public static function getInstance($params=[])    {if (!self::$instance instanceof self) {    self::$instance = new self($params);}return self::$instance;    }    private function connect()    {try{    // 配置數(shù)據(jù)源DSN    $dsn = "{$this->dbConfig["db"]}:host={$this->dbConfig["host"]};port={$this->dbConfig["port"]};dbname={$this->dbConfig["dbname"]};charset={$this->dbConfig["charset"]}";    // 創(chuàng)建PDO對象    $this->conn = new PDO($dsn,$this->dbConfig["user"],$this->dbConfig["pass"]);    // 設(shè)置客戶端字符集    $this->conn->query("SET NAMES {$this->dbConfig["charset"]}");}catch (PDOException $e){    die("數(shù)據(jù)庫連接失敗".$e->getMessage());}    }    /**      * 完成數(shù)據(jù)表的操作: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(); // 獲取最后操作錯(cuò)誤信息的數(shù)組    var_dump($error);}    }    // 獲取單條查詢結(jié)果    public function fetch($sql)    {return $this->conn->query($sql)->fetch(PDO::FETCH_ASSOC);    }    // 獲取多條查詢結(jié)果    public function fetchAll($sql)    {return $this->conn->query($sql)->fetchAll(PDO::FETCH_ASSOC);    }}?>

調(diào)用

Demo.php

<?php/** * Db類測試 */require "Db.php";// 獲取Db類實(shí)例$db = Db::getInstance();// 新增操作// $sql = "INSERT student SET name="張一鳴",email="[email protected]",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);?>

數(shù)據(jù)庫表格結(jié)構(gòu)

SQL

全選下面的SQL語句粘貼至數(shù)據(jù)庫管理工具的SQL執(zhí)行框進(jìn)行執(zhí)行即可快速創(chuàng)建測試數(shù)據(jù)庫。

-- phpMyAdmin SQL Dump-- version 4.8.5-- https://www.phpmyadmin.net/---- 主機(jī): localhost-- 生成日期: 2022-08-08 10:46:35-- 服務(wù)器版本: 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 */;---- 數(shù)據(jù)庫: `edu`---- ------------------------------------------------------------ 表的結(jié)構(gòu) `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;---- 轉(zhuǎn)存表中的數(shù)據(jù) `student`--INSERT INTO `student` (`id`, `name`, `email`, `grade`, `course`) VALUES(1, "王興", "[email protected]", "80", "ruby"),(2, "黃崢", "[email protected]", "68", "mysql"),(6, "李彥宏", "[email protected]", "95", "python"),(5, "馬云", "[email protected]", "88", "php"),(7, "劉強(qiáng)東", "[email protected]", "76", "C++"),(8, "馬化騰", "[email protected]", "59", "java"),(9, "張一鳴", "[email protected]", "77", "golang");---- 轉(zhuǎn)儲表的索引------ 表的索引 `student`--ALTER TABLE `student`  ADD PRIMARY KEY (`id`);---- 在導(dǎo)出的表使用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 */;

到此這篇關(guān)于php實(shí)現(xiàn)pdo數(shù)據(jù)庫操作類過程詳解的文章就介紹到這了,更多相關(guān)php pdo數(shù)據(jù)庫操作內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 欧美在线三级 | 国产精品久久久久毛片真精品 | 日本黄大片影院一区二区 | 国产综合在线播放 | 男人天堂网2022 | 97se狠狠狠狠狠亚洲综合网 | 国产精品久久久久久影院 | 国产福利社区 | 久久国产精品久久精 | 成人区视频爽爽爽爽爽 | 91久久精品国产91久久性色tv | 台湾三级在线播放 | 99re久久精品国产首页2020 | 欧美一级aa免费毛片 | 99色在线视频| 日韩一级片免费看 | 台湾黄三级高清在线观看播放 | 成年女人毛片免费视频永久vip | 精品国产日韩亚洲一区在线 | 国产亚洲精品成人一区看片 | 寡妇一级a毛片免费播放 | 亚洲国产一区二区三区四区 | 亚洲精品一区二区三区不卡 | 欧美高清色视频在线播放 | 一区二区不卡视频在线观看 | 国产a不卡 | 国产成人精品一区二区三在线观看 | 欧美精品伊人久久 | 免费一级毛片无毒不卡 | 国产精品久久久久久久专区 | 国产精品99久久久久久人 | 欧美午夜精品久久久久久黑人 | 亚洲一区成人 | 一区二区国产精品 | 香港三级做爰大爽视频 | 国产成人久久一区二区三区 | 日韩在线国产精品 | 久久免费视频播放 | 免费视频精品一区二区三区 | 免费国产在线观看 | 日韩一区二区三区视频在线观看 |