zoukankan      html  css  js  c++  java
  • 数据库抽象层

    数据库抽象层:

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

      当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将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变量);

               

  • 相关阅读:
    vim/vi——\n只能被替换或删除 \r只能用来插入或替换
    程序算法与人生选择【转】
    【R】大型机Linux系统安装R及bsub提交R任务
    Mothur 命令手册Mothur命令中文解释(一)
    集群与分布式的区别
    【R】Linux安装R语言包(Installing R packages on Linux)
    Android TableLayout 常用的属性介绍及演示
    handler.obtainMessage()理解
    利用sax处理xml(推荐)
    Android 的权限设置大全3
  • 原文地址:https://www.cnblogs.com/shuo-128/p/6900699.html
Copyright © 2011-2022 走看看