三种模式
PDO::ERRMODE_SLIENT:默认模式,静默模式 0
有错误时不会提示
<?php
try {
$dsn="mysql:host=localhost;dbname=testdb";
$username = "root";
$password = "root";
$pdo = new PDO($dsn,$username,$password);
$sql = "select * from noneTab";
$pdo->query($sql);
echo $pdo->errorCode();//查询一个不存在的表,如果没有这一行代码就是一片空白
print_r($pdo->errorInfo());//显示更详细的错误信息
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
PDO::ERRMODE_WARNING:警告模式 1
<?php
try {
$dsn="mysql:host=localhost;dbname=testdb";
$username = "root";
$password = "root";
$pdo = new PDO($dsn,$username,$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); //PDO::ERRMODE_WARNING写作 1 也行
$sql = "select * from noneTab";
$pdo->query($sql);
echo $pdo->errorCode();
echo "<br />";
print_r($pdo->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
PDO::ERRMODE_EXCEPTION:异常模式 2
<?php
try {
$dsn="mysql:host=localhost;dbname=testdb";
$username = "root";
$password = "root";
$pdo = new PDO($dsn,$username,$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //PDO::ERRMODE_EXCEPTION写作 2 也行
$sql = "select * from noneTab";
$pdo->query($sql);
echo $pdo->errorCode();
echo "<br />";
print_r($pdo->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
有错误时,错误之后的代码不再执行,直接执行getMessage()
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.nonetab' doesn't exist
beginTransaction() 启动一个事务
commit() 提交一个事务
rollBack() 回滚一个事务
inTransaction() 检测是否在一个事务内
try{
$dsn = "mysql:host=localhost;dbname=testdb";
$username = "root";
$password = "root";
$options = array(PDO::ATTR_AUTOCOMMIT,0);
$pdo = new PDO($dsn,$username,$password,$options);
//开启事务
$pdo->beginTransaction();
$sql = 'update userAccount set money=money-2000 where username="imooc"';
$res1 = $pdo->exec($sql);
if($res1==0){
throw new PDOException('imooc转账失败');
}
$res2 = $pdo->exec('update userAccount set money=money+2000 where username="king"');
if($res2==0){
throw new PDOException('king接收失败');
}
$pdo->commit();
}catch(PDOException $e){
$pdo->rollBack();
echo $e->getMessage();
}




