• 数据库抽象层


    数据库抽象层:

      在数据迁移和项目操作多数据库时,为了便于操作而提供一种的解决方案。

      当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL。

      代码规划必须规范,尽量使用相同的数据进行对象实例化,并且使用相同的数据库抽象层(如PDO)。这样只需要改变系统的配置文件即可迁移数据库。

      目前,使用PHP进行不同的数据库系统开发,这些系统很不相同,而许多数据库抽象层在PHP的层次有所不同,但彼此使用方法相当,它的发展无疑会提高开发效率。

    常见的数据库抽象层:

      PDO,ADODB, Metabase,PEAR:DB, MySqli(mysql扩展组件)

    PDO优点:

      PDO底层是c语言开发的,速度较快

      PDO简单易学(30多个函数-20个左右)

      PHP高版本中已经将PDO作为默认的数据库链接方式,而mysql_query即将被淘汰。

    PDO的用法:

      PDO类: 用于操作数据库的基本命令  $pdo_object

      PDO Statement类: 对查询得到的结果集做操作的类  $pdo_statement

      PDO Exception类: PDO异常类

    PDO配置和初始化:

      Php.ini 开启PDO: 重新apache

      Extension = php_pdo.dll

      Extension = php_pdo_mysql.dll

      $db = new PDO("库类型:host=?;dbname=?","用户名","密码");

              链接字符串(DSN) 

      【PDO_connect.php】

    <?php
    $dsn = "mysql:host=localhost;dbname=thinkshop";
    $user= "root";
    $pwd = "";
    
    try{
        $pdo = new PDO($dsn,$usr,$pwd);
    }catch(PDOException $e){
        echo $e -> getMessage();
    }
    if($pdo instanceof PDO) echo "PDO connect ok"; else echo "PDO connect error"; ?>

      查询操作:

        $pdo_statement = $pdo_object -> query("sql命令"):

          返回值:

        查询功能:  有记录返回-返回结果集   false

        插入/删除/修改 :返回 true  or  false

      获取结果集中数据为数组:

        $pdo_statement -> Fetch():转换一条记录为一维数组

        $pdo_statement -> FetchAll()转换所有记录为二维数组

      设置数组样式:

        $pdo_statement -> serFetchMode(模式)

          模式:

            PDO::FETCH_NUM:  索引数组

            PDO::FETCH_BOTH: 两种数组

            PDO::FETCH_ASSOC: 关联数组

      设置链接属性(大小写):

        $pdo_statement -> setAttribute(属性,值);

          属性:

            PDO::ATTR_CASE

          值:

            PDO::CASE_UPPER  大写

            PDO::CASE_LOWER 小写

      【pdo_statement.php】

    <?php
    $dsn = "mysql:host=localhost;dbname=thinkshop";
    $user= "root";
    $pwd = "";
    
    try{
        $pdo = new PDO($dsn,$user,$pwd);
    }catch(PDOException $e){
        echo $e -> getMessage();
    }
     
    $sql = "select * from students";
    $result = $pdo -> query($sql);
    $data = $result -> fetchAll();
    print_r($data);
    
    echo "<hr/>";
    
    // 取出后结果集对象中数据不存在
    
    $pdo -> setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);  // key名大写
    $result = $pdo -> query($sql);
    $result -> setFetchMode(PDO::FETCH_ASSOC);
    $data = $result -> fetch();
    print_r($data);
    ?>

      修改,删除等无结果集返回的sql操作

        $pdo_object -> exec(sql语句);

        返回:  有记录影响,返回的是影响行数,无影响返回0;

      预加载处理: 一次加载多次执行.

        $pdo_statement = $pdo_object -> prepare(sql语句) : 预加载sql语句命令

        $pdo_statement-> execute(): 执行预加载命令

        $sql = "select * from  student where sid=:id& sname=:name";

               ?: 内存变量标示的统一符号。

               :字符 -> 内存变量;

          $sql = "select * from  student where sid=:id& sname=:name"

          $pdo_statement->bindValue(":id",值)

          $sql = "select * from  student where sid=?& sname=?"

          $pdo_statement->bindValue(1,值)

          $pdo _statement -> bindParam(":id|数字",PHP变量);

               

  • 相关阅读:
    StreamSets学习系列之StreamSets是什么?
    [转]How to mouse hover using Blue prism on a web page
    [转]UiPath: How to Capture a Mouse Event on Hover Menus?
    [转]VB.net中 excel 的range方法
    [转]Paste from Excel into C# app, retaining full precision
    [转]uipath team svn
    [转]RPA认证 Developer UIPath Certificate,细说uipath认证学习,Online Quiz和Practical Exam项目详解
    [转]UiPath教程:UiPath及其组件介绍
    [转]Introduction
    [转]How to enable macros in Excel 2016, 2013, and 2010
  • 原文地址:https://www.cnblogs.com/shuo-128/p/6900699.html
Copyright © 2020-2023  润新知