pdo调试三个类以及事务处理

2019-02-17  本文已影响0人  小祈祈博客

pdo三个类

pdo类 和数据库连接有关的类(连接,执行)

PDOSatement类 准备语句

PDOException异常类

其他很多常量

创建pdo对象

dsn(data source name)数据源

主机位置和库名,连接那种数据库的驱动

在配置文件中指定pdo

[pdo]

pdo.dsn.mysqlpdo=mysql:host=localhost;dbname=test;

<?

header("Content-type:text/html;charset=utf-8");

try{

$driver=array(PDO::ATTR_AUTOCOMMIT=>0,PDO::ATTR_PERSISTENT=>true);

$pdo=newPDO("mysql:host=localhost;dbname=test","root","123456",$driver);

$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);

$pdo->setAttribute(PDO::ATTR_PERSISTENT,true);

}catch(PDOException $error){

 echo "error".$error->getMessage();

 exit;

  }

echo $pdo->getAttribute(PDO::ATTR_PERSISTENT)."<br>";

echo $pdo->getAttribute(PDO::ATTR_CLIENT_VERSION)."<br>";

echo $pdo->getAttribute(PDO::ATTR_DRIVER_NAME)."<br>";

echo $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT)."<br>";

echo $pdo->getAttribute(PDO::ATTR_SERVER_VERSION)."<br>";

?>

<?

header("Content-type:text/html;charset=utf-8");

try{

$PDO=newPDO("mysql:host=localhost;dbname=chat;","root","123456",array(PDO::ATTR_AUTOCOMMIT=>0));

$PDO->query("SET NAMES utf8");

//设置警告模式

$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);

//建议设置成异常模式而不是警告模式

$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

}catch(PDOException $error){

 echo "error:".$error->getMessage();

 exit;

    }

//执行sql语句 exec() query() prepare()

//结果集 query()

//exec()非select语句,影响的行数

try{

  $PDO->beginTransaction();

$price=500;

$sql="update zhanghao set price=price-{$price}where id=1";

$affected_rows=$PDO->exec($sql);

if(!$affected_rows)

throw new PDOException("张三转出失败");

$sql="update zhanghao set price=price+{$price}where id=2";

$affected_rows=$PDO->exec($sql);

if(!$affected_rows)

throw new PDOException("向李四转出失败");

echo "交易成功";

$PDO->commit();

}catch(PDOException $error){

 echo "error:".$error->getMessage();

  $PDO->rollback();

  }

$PDO->setAttribute(PDO::ATTR_AUTOCOMMIT,1);

?>

上一篇 下一篇

猜你喜欢

热点阅读