PDO的使用

PDO是什么?

PDO是别人写的“数据库操作工具类”!——它可以代替我们自己写的MySQLDB.class.php.

使用它,类似这样:

$pdo  = new PDO(连接信息);

$sql = “select * from .....”;

$result = $pdo->query($sql); //返回一个“pdo结果集”;

$sql = “delete / update / insert  ........ ”;

$result2 = $pdo->exec($sql); //返回一个真假值;

 

手册可以找到:

函数参考》数据库扩展》数据库抽象层》PDO

 

具体应用的时候,其实,其中有这样的一个关系:

 

使用pdo连接mysql数据库

例子:

<?php
$conn = new PDO('mysql: host=localhost;dbname=php39;port=3306;charset=utf8','userName','password');
?>

 

   例子:

<?php
function getFruit($conn) {
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach ($conn->query($sql) as $row) {
        print $row['name'] . "\t";
        print $row['color'] . "\t";
        print $row['calories'] . "\n";
    }
}
?>

错误预处理方式: 

 

异常模式

 

可以简单理解为:适应面向对象语法的处理错误的一种语法结构。如下所示:

 

 

 

try{

 

在这里,可以执行“可能出错”的语句(多条也可以);

 

一旦发生错误,就会终止当前范围的后续程序执行,

 

而立即跳转到catch部分——处理错误!

 

}

 

catch( Exception  $e ){

 

//一旦发生错误,就会进入这里,此时,并会生成一个“错误对象”;

 

//该错误对象,就是系统类Exception的一个实例:它包含了错误信息。

 

}

 

 

 

pdo要使用异常模式,就得专门设置(因为其默认是静默模式):

 

 

 

Example #1 创建 PDO 实例并设置错误模式

<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

$result = $pdo->query(“返回结果集的sql语句”); //对比最原始的函数: mysql_query(“select ..... “)

结果:

成功:就是一个pdo结果集对象;

失败:false;

 

$result = $pdo->exec(“增删改的sql语句”);

结果: true(表示成功),false(表示失败);

 

$pdo = null; //销毁该对象;

 

其他操作:

  • $pdo->lastInsertId();
    • 获取最后添加的id值;
  • $pdo->beginTransaction();:
    • 开启一个事务
  • $pdo->commit()
    • 提交一个事务
  • $pdo->rollBack();
    • 回滚一个事务;
  • $pdo->inTransaction();
    • 判断当前行是否在事务中,返回true/false
  • $pdo->setAttribute(属性名,属性值);
    • 设置pdo对象的属性值;
    • 举例:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

 

$pdo->begintrsaction();

$pdo->exec(“insert ....”);

$pdo->exec(“delete ....”);

$v1 =  $pdo->intransaction(); //结果是true

 

posted on 2016-05-23 20:32  vitalizer  阅读(301)  评论(0编辑  收藏  举报

导航