<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>
时间: 2024-10-03 13:38:48