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

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)."
";

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

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

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

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

?>




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);

?>

你可能感兴趣的:(pdo调试三个类以及事务处理)