zoukankan      html  css  js  c++  java
  • PDOstament对象执行execute()函数,只要是sql语句正确都是返回true

    【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");
  • 相关阅读:
    分享PHP获取客户端IP的几种不同方式
    php魔术方法get和set举例
    PHP正确匹配图片路径
    PHP通用的防注入过滤用户字符串函数
    用PHP逐行读取TXT文件
    atitit.ajax 最佳实践跟框架选型 o99
    Atitit.研发管理提升效率软件开发方法DSM总结o99
    Atitit. js mvc 总结(2)angular 跟 Knockout o99 最佳实践
    atitit.hbnt orm db 新新增更新最佳实践o99
    Atitit.提升稳定性分析内存泄漏PermGen OOM跟解决之道...java
  • 原文地址:https://www.cnblogs.com/wuyinghong/p/3370493.html
Copyright © 2011-2022 走看看