【PDO对象操作数据库】

PDOstament对象执行execute()函数,只要是sql语句正确都是返回true。

问题:

想要PDO对象实现更改一条记录, 并修改是否成功要返回信息给用户。

上我的代码:

//PDO对象实现更改一条记录

    $sql4= "update xs_user set `passwd`=md5('123') where `username`=? and `sex`=?";
echo $sql4;
$stmt = $pdo->prepare($sql4);
$username = "bright009";
$sex = "女"; //一种是直接写在execute的参数array()带进去,一种是通过绑定参数法
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $sex);
$flag4 = $stmt->execute();
//当返回值为真时,就表示修改成功
if($flag){ //array('bright006','男')当查询的条件多个时,直接按序写在array数组里面即可 $data = $stmt->fetch();
$smarty->assign("flag","ok"); }else{
$smarty->assign("flag","fail");
}
$smarty -> display("test.tpl");

我错误的原因是:

把PDOstament对象执行execute()函数后返回的值误以为成修改成功或失败。其实执行execute函数,只要sql语句正确,返回值都是false,所以我这里所写的sql语句是正确的,但是在数据库中并没有此记录,它仍然是返回true,所以我就卡在这里了。

多次查看手册+百度无果,上群问其他人还真是一个好方法。

解决方法:

既然自己要返回一个是否修改成功的信息给用户,可以使用一个rowCount()函数统计被影响的行数$res,然后根据$res是否>0做判断就好了。

改后的代码:

//PDO对象实现更改一条记录

    $sql4= "update xs_user set `passwd`=md5('123') where `username`=? and `sex`=?";
echo $sql4;
$stmt = $pdo->prepare($sql4);
$username = "bright009";
$sex = "女"; //一种是直接写在execute的参数array()带进去,一种是通过绑定参数法
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $sex);
$flag4 = $stmt->execute();
$res = $stmt->rowCount();
if($res>0){ //array('bright006','男')当查询的条件多个时,直接按序写在array数组里面即可 $data = $stmt->fetch();
$smarty->assign("flag","ok"); }else{
$smarty->assign("flag","fail");
}
$smarty -> display("test.tpl");

最新文章

  1. 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则
  2. BZOJ2705: [SDOI2012]Longge的问题
  3. mysql 数据库基本概念
  4. hdu1018(数位)
  5. JMockit
  6. php程序效率优化的一些策略小结
  7. nginx负载均衡的实现
  8. UIActivityViewController 自定义选项
  9. AngularJS~集成的ajax和服务的注入
  10. lightoj 1012
  11. 【网络流#6】POJ 3041 Asteroids 二分图最大匹配 - 《挑战程序设计竞赛》例题
  12. Oracle官方版Entity Framework
  13. c++中string的用法
  14. Linux+Nginx+Asp.net Core部署
  15. hadoop 50070 无法访问问题解决汇总
  16. MongoDB 关系
  17. Socket用线程池处理服务
  18. Alpha(5/10)
  19. 大杂烩 -- 查找单向链表倒数第m个元素
  20. ob

热门文章

  1. WPF 进度条
  2. CURL传输与获取功能
  3. highcharts-Highmaps 动态传入城市名称
  4. 工具批处理Demo
  5. linux下安装MySQL5.6记录
  6. Linux相关命令
  7. JDK源码阅读(五)java.io.Serializable接口
  8. tyvj P1209 - 拦截导弹 平面图最小割&&模型转化
  9. 【MongoDB】应用场景
  10. luoguP2265 路边的水沟