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