• PHP的PDO模式数据操作


    PDO的全称为(PHP data object)

    PHP(数据应用对象)可以看做:

    1.代表PHP和数据库服务之间的一个连接;
    2.可以视作针对不同问题的解决方案;
    3.是一个标准的API(应用程序编程接口);
    4.一套解决问题的函数库
    PDO驱动:针对某种不同功能的函数库(支持的数据库);
    PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。

    PDO中包含三个预定义的类,它们分别是 PDO、PDOStatement 和 PDOException。

    PDO提供了三种不同的错误处理模式,可以满足不同风格的应用开发。

    • PDO::ERRMODE_SILENT 
    此为默认模式。 PDO 将只简单地设置错误码,可使用 PDO::errorCode() 和 PDO::errorInfo() 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的 PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。 


    • PDO::ERRMODE_WARNING 
    除设置错误码之外,PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。 


    • PDO::ERRMODE_EXCEPTION 
    除设置错误码之外,PDO 还将抛出一个 PDOException 异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用,因为它会有效地放大脚本中产生错误的点,从而可以非常快速地指出代码中有问题的潜在区域(记住:如果异常导致脚本终止,则事务被自动回滚)。 


    PDO 使用 SQL-92 SQLSTATE 来规范错误码字符串;不同 PDO 驱动程序负责将它们的本地代码映射为适当的 SQLSTATE 代码。PDO::errorCode() 方法返回一个单独的 SQLSTATE 码。如果需要更多此错误的细节信息,PDO 还提供了一个 PDO::errorInfo() 方法来返回一个包含 SQLSTATE 码、特定驱动错误码以及此驱动的错误字符串的数组。

    举例:这是我写的一个PDO函数封装

    <?php
    
    /**
     * 我直接针对PDO的封装类
     * User: seven
     * Date: 2017/7/26
     * Time: 9:43
     */
    class MyPDO
    {
        /** 访问数据库的PDO对象 */
        protected $pdo;
    
        /**
         * 当前类的构造函数
         * 读取数据库配置信息文件,并初始化PDO对象
         */
        function __construct()
        {
            if(file_exists('db.ini')){
                $arr = @parse_ini_file('db.ini');
            }else{
                exit('没有找到对应的数据库配置文件信息 ...');
            }
            $dsn = "{$arr['dbms']}:dbname={$arr['dbname']};host={$arr['host']};port={$arr['port']};charset={$arr['charset']}";
            $user = $arr['user'];
            $password = $arr['password'];
            $this->pdo = new PDO($dsn,$user,$password);
        }
    
        /**
         * 销毁自己的操作类时,同时销毁被创建了的PDO对象
         */
        function __destruct()
        {
            $this->pdo = null;
        }
    
        /**
         * 执行DML操作语句
         * @param $sql     需要执行的SQL语句
         * @return int     返回执行语句后受到影响的行数
         */
        public function pdoExec($sql){
            return $this->pdo->exec($sql);
        }
    
        /**
         * 返回结果为数组结构
         * @param $sql        需要执行的SQL语句
         * @param int $var    执行query函数的参数(可选值:PDO::FETCH_BOTH(默认),PDO::FETCH_NUM,PDO::FETCH_ASSOC)
         * @return array      将结果转换为数组并返回,如果没有查询结果则返回一个空数组
         */
        public function arrayByPdoQuery($sql, $var=PDO::FETCH_BOTH){
            $ps = $this->pdo->query($sql, $var);
            if($ps)
                return $ps->fetchAll();
            return array();
        }
    
        /**
         * 获取查询结果并封装为一个对象数组
         * @param $sql                  需要执行的SQL语句
         * @param string $class_name    创建类的名称
         * @param array $ctor_args      此数组的元素被传递给对应类的构造函数
         * @return array                返回组装好的对象数组
         */
        public function objectByPdoQuery($sql, $class_name='stdClass', $ctor_args=array()){
            $ps = $this->pdo->query($sql);
            $arr = array();
            if($ps){
                while ($obj = $ps->fetchObject($class_name, $ctor_args)){
                    array_push($arr, $obj);
                }
            }
            return $arr;
        }
    

      

    再插一个数据库文件就可以直接用了

    加油,朝着梦想前进
  • 相关阅读:
    Authorize 示例
    javscript 实现iframe加载内容页出现Loading效果
    泛型的Distinct(IEqualityComparer)的用法
    关于ViewData与TempData
    将表 自增长列 清零 循环插入时间自增长
    linq count() sum() Min() Max() Average() 用法
    分页的存储过程
    将图片文件与文本文件合并成图片文件
    asp.net mvc利用Json验证数据和导向页面,解决重复提交问题
    JQUERY DIV浮动提示信息
  • 原文地址:https://www.cnblogs.com/scmy707248119-/p/7263551.html
Copyright © 2020-2023  润新知