PDO 数据访问抽象层

PDO(PHP data object):

PHP 数据对象PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。 

                                                                                                                  驱动名称                                支持的数据库类型

PDO_CUBRID Cubrid
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_IBM IBM DB2
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x/5.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 及 SQLite 2
PDO_SQLSRV Microsoft SQL Server / SQL Azure
PDO_4D 4D

用法:

1.造对象

  $dsn = $dsn = "mysql:dbname=mydb;host=localhost";

  $pdo = new PDO($dsn,"root","123");

2.写SQL语句

  $sql = "select * from  info";

或者$sql = "insert into info values ("xxx","xxx")";

3.执行语句:

  $a = $pdo->query($sql);

 

PDO事务功能:

能够控制语句同时成功同时失败,失败时可以回滚。
方法:
  
//1.造对象
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123");

//2.设置异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

//3.捕获异常
try{
    //要执行的代码
    //开启事务功能
    $pdo->beginTransaction();
    
    $sql = "insert into nation values('n018','人族')";
    $sql1 = "insert into nation values('n019','回族')";
    $pdo->query($sql);
    $pdo->query($sql1);
    
    //提交事务执行
    $pdo->commit();

}catch(Exception $e){
    //echo $e->getMessage();
    //回滚
    $pdo->rollBack();
}

防SQL注入攻击:

$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123");
//第一种:用“?”占位符
$sql = "insert into nation values(?,?)";
//第二种:关联索引
//$sql = "insert into nation values(:code,:name)";
//$stm = $pdo->prepare($sql);
//$arr = array("code"=>"xxx","name"=>"xxx");

//将SQL语句放到服务器等待执行
$stm = $pdo->prepare($sql);
//将参数传递到服务器开始执行
$arr = array("xxx","xxx");
$stm->execute($arr); 
原文地址:https://www.cnblogs.com/rose1324/p/8360162.html