SQL Server数据库抽象层 – PDO

数据库抽象层:

  以数据迁移和路操作多数据库时,为了便于操作而提供平等种之化解方案。

  当由一个数据库系统为另外一个数据库系统迁移时,几乎不用转太多之程序代码,如以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变量);

           

相关文章