PDO对象方法的使用具体介绍(一)

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



posted on 2017-05-03 17:02  ljbguanli  阅读(140)  评论(0编辑  收藏  举报