<span style="font-size:18px;"><?php
一:插入语句
try{
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo "数据库连接失败:".$e->getMessage();
exit;
}
//执行SQL语句 exec() query() prepare()
//一是有结果集的query(), 执行select语句
//exec()用来执行有影响行数的,update, delete insert, other
//exec()返回的是影响的行数
echo "影响的行数".$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");
//设置错误报告模式
二:设置错误模式-默认模式
try{
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo "数据库连接失败:".$e->getMessage();
exit;
}
//执行SQL语句 exec() query() prepare()
//一是有结果集的query(), 执行select语句
//exec()用来执行有影响行数的,update, delete insert, other
//exec()返回的是影响的行数
$affected_rows=$pdo->exec("insert into shops(name, price, num, desn) values('aa', '12.1', '10', 'good')");
//设置错误报告模式 ERRMODE_SILENT 0 ERRMODE_WARNING 1 ERRMODE_EXCEPTION 2
if(!$affected_rows){ //默认模式,如果自己不懈 默认模式sql有问题什么都不会提示
echo $pdo->errorCode()."<br>";//错误代码
print_r($pdo->errorInfo()); //错误的详细信息
}else{
echo "执行成功!";
}
三:设置警告模式
try{
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//sql执行错误,设置成警告模式
}catch(PDOException $e){
echo "数据库连接失败:".$e->getMessage();
exit;
}
//执行SQL语句 exec() query() prepare()
//一是有结果集的query(), 执行select语句
//exec()用来执行有影响行数的,update, delete insert, other
//exec()返回的是影响的行数
$affected_rows=$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");
//设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING
print_r($pdo->errorInfo());
四:PDO异常模式 ---推荐使用
try{
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//pdo推荐使用模式 ----异常模式
}catch(PDOException $e){
echo "数据库连接失败:".$e->getMessage();
exit;
}
//执行SQL语句 exec() query() prepare()
//一是有结果集的query(), 执行select语句
//exec()用来执行有影响行数的,update, delete insert, other
//exec()返回的是影响的行数
try{
$affected_rows=$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");
}catch(PDOException $e){
echo $e->getMessage();//设置成警告模式的话就会走到这里
}
//设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING
五:select语句,只有查询用query
try{
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo "数据库连接失败:".$e->getMessage();
exit;
}
//执行SQL语句 exec() query() prepare()
//一是有结果集的query(), 执行select语句
//exec()用来执行有影响行数的,update, delete insert, other
//exec()返回的是影响的行数
try{
$stmt=$pdo->query("select * from shops");
foreach($stmt as $row){
print_r($row);
echo '<br>';
}
}catch(PDOException $e){
echo $e->getMessage();
}
//设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING
六:PDO事务处理
try{
//PDO::ATTR_AUTOCOMMIT=>0 数据库的自动提交先关掉(事物)
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456", array(PDO::ATTR_AUTOCOMMIT=>0));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo "数据库连接失败:".$e->getMessage();
exit;
}
//执行SQL语句 exec() query() prepare()
//一是有结果集的query(), 执行select语句
//exec()用来执行有影响行数的,update, delete insert, other
//exec()返回的是影响的行数
/*
*
* 事务处理
*
* 张三从李四那里买了一台 2000 元的电脑
*
* 从张三帐号中扣出 2000元
*
* 向李四账号中加入 2000元
*
* 从商品表中减少一台电脑
*
* MyIsAM不支持事物处理,速度快 ****InnoDB支持事物处理,但速度吗
*
*/
单条语句别用事物
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("张三转出失败");//如果执行错误手动抛出一个异常
//比如数据库id只有 1,2 故意写3不存在的数据也会说执行成功,所以手动抛出个异常信息
$sql="update zhanghao set price=price+{$price} where id=3";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException("向李四转入失败");//手动抛出一个异常 PDOException函数
echo "交易成功!";
$pdo->commit();
}catch(PDOException $e){
echo $e->getMessage();
$pdo->rollback();//如果上面2个UODATE语句有问题就回滚
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//最后执行在吧自动提交模式在开启,否则数据看到不没执行类似缓存效果
//设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING
</span>原文地址:http://blog.csdn.net/leyangjun/article/details/38061395