最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2022年12月21日 16:32:20   作者:TANKING-  
這篇文章主要介紹了php實(shí)現(xiàn)pdo數(shù)據(jù)庫操作類過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

數(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='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);
?>

數(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.4
SET 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, '王興', 'meituan@qq.com', '80', 'ruby'),
(2, '黃崢', 'pdd@qq.com', '68', 'mysql'),
(6, '李彥宏', 'baidu@qq.com', '95', 'python'),
(5, '馬云', 'mayun@qq.com', '88', 'php'),
(7, '劉強(qiáng)東', 'jd@qq.com', '76', 'C++'),
(8, '馬化騰', '10001@qq.com', '59', 'java'),
(9, '張一鳴', 'ByteDance@qq.com', '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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • php的mssql數(shù)據(jù)庫連接類實(shí)例

    php的mssql數(shù)據(jù)庫連接類實(shí)例

    這篇文章主要介紹了php的mssql數(shù)據(jù)庫連接類,以一個(gè)類實(shí)例的形式演示了PHP實(shí)現(xiàn)針對mssql數(shù)據(jù)庫的各種常用操作方法,包括對數(shù)據(jù)庫的連接與增刪改查等操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • Windows下的PHP5.0詳解

    Windows下的PHP5.0詳解

    Windows下的PHP5.0詳解...
    2006-11-11
  • php下使用strpos需要注意 === 運(yùn)算符

    php下使用strpos需要注意 === 運(yùn)算符

    首先應(yīng)該知道 strpos 函數(shù)可能返回布爾值 FALSE,但也可能返回一個(gè)與 FALSE 等值的非布爾值,例如 0 或者""。我們應(yīng)使用 === 運(yùn)算符來測試本函數(shù)的返回值。
    2010-07-07
  • 聊一聊關(guān)于php源碼中refcount的疑問

    聊一聊關(guān)于php源碼中refcount的疑問

    這篇文章主要給大家介紹了關(guān)于對php源碼中refcount的相關(guān)疑問,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-11-11
  • php實(shí)現(xiàn)用于驗(yàn)證所有類型的信用卡類

    php實(shí)現(xiàn)用于驗(yàn)證所有類型的信用卡類

    這篇文章主要介紹了php實(shí)現(xiàn)用于驗(yàn)證所有類型的信用卡類,實(shí)例分析了信用卡類的實(shí)現(xiàn)原理與相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • PHP將整數(shù)數(shù)字轉(zhuǎn)換為羅馬數(shù)字實(shí)例分享

    PHP將整數(shù)數(shù)字轉(zhuǎn)換為羅馬數(shù)字實(shí)例分享

    本篇文章中小編給大家分享了一篇關(guān)于PHP將整數(shù)數(shù)字轉(zhuǎn)換為羅馬數(shù)字的知識點(diǎn)以及實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • 細(xì)談php中SQL注入攻擊與XSS攻擊

    細(xì)談php中SQL注入攻擊與XSS攻擊

    通常在編程中程序員要考慮的問題不僅是代碼效率與代碼復(fù)用性,而且還要考慮一些安全問題
    2012-06-06
  • 不錯(cuò)的一篇面向?qū)ο蟮腜HP開發(fā)模式(簡寫版)

    不錯(cuò)的一篇面向?qū)ο蟮腜HP開發(fā)模式(簡寫版)

    不錯(cuò)的一篇面向?qū)ο蟮腜HP開發(fā)模式(簡寫版)...
    2007-03-03
  • 詳解PHP反序列化漏洞示例與原理

    詳解PHP反序列化漏洞示例與原理

    PHP反序列化漏洞也叫PHP對象注入,是一個(gè)非常常見的漏洞,這種類型的漏洞雖然有些難以利用,但一旦利用成功就會造成非常危險(xiǎn)的后果。本文將詳細(xì)講講PHP反序列化漏洞的原理及示例,感興趣的可以了解一下
    2022-09-09
  • PHP緩存集成庫phpFastCache用法

    PHP緩存集成庫phpFastCache用法

    這篇文章主要介紹了PHP緩存集成庫phpFastCache用法,包括基本用法的分析與操作實(shí)例,在PHP項(xiàng)目開發(fā)中非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12

最新評論

靖宇县| 虞城县| 宝清县| 青岛市| 镇坪县| 锦州市| 潍坊市| 成都市| 江达县| 淮滨县| 莱州市| 从化市| 横峰县| 赤壁市| 汶上县| 兰溪市| 建德市| 衡水市| 红桥区| 汉源县| 松溪县| 乌兰浩特市| 乐业县| 湘乡市| 建昌县| 勐海县| 马鞍山市| 长兴县| 白河县| 甘孜县| 孝感市| 库伦旗| 永胜县| 铜山县| 临高县| 大同市| 远安县| 宝鸡市| 江都市| 新郑市| 威海市|