无法从php

时间:2016-09-01 08:38:46

标签: php mysql

以下是我的代码

try {
                 $pdo = Database::connect();
                 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
               //$sql = "UPDATE usermaster SET Password=?, UserName=?, OwnerOrEmp=?, DBName=?, DeleteFlag=?, UpdateDate=? WHERE UserId = ?";
                $sql = "UPDATE usermaster SET Password=:password, UserName=:userName, OwnerOrEmp=:ownerOrEmp, DBName=:dBName, DeleteFlag=:deleteFlag, UpdateDate=:updateDate WHERE UserId = :id";
                $q = $pdo->prepare($sql);
                $q->bindParam(':id', $id, PDO::PARAM_STR, 8);
                $q->bindParam(':userName', $name);
                $q->bindParam(':password', $pass);
                $q->bindParam(':ownerOrEmp', $ownEmp);
                $q->bindParam(':dBName', $dbName);
                $q->bindParam(':deleteFlag', $delEmp);
                $q->bindParam(':updateDate', $curr_date);
                $q = $pdo->prepare($sql);
            $q->execute(array($pass,$name,$ownEmp,$dbName,$delEmp,$curr_date, $id));
            Database::connect();

        }catch(PDOException $e){
            //die($e->getMessage());
            $db_error = "".$e->getMessage();
        }
        header("Location: ShainIndex.php");
    }

请求您的善意见解,仅此一段代码无法执行且未执行更新...提前致谢。

2 个答案:

答案 0 :(得分:0)

你准备两次相同的查询

         $q->bindParam(':updateDate', $curr_date);
           // $q = $pdo->prepare($sql);  //comment this line
        $q->execute(array($pass,$name,$ownEmp,$dbName,$delEmp,$curr_date, $id));

答案 1 :(得分:0)

我终于开始调试插入的每个变量值,如上面的bindParam()所示。事实证明,默认情况下或由于某些字符串处理,发生了一个空格(“”)被插入到这些变量的许多值中。 因此,这个空间导致的是,它不允许将数据库上的值与来自视图的输入数据进行匹配。 由于特别是“id”字段接收带空格的值...如“00100001”虽然它不容易看到,但它从未与db表中的“00100001”值匹配。 因此,这花了我一整天,几乎让我失去了工作。在某些地方,一个小的“ - ”打破了整个卫星发射火箭。 所以,我在某种程度上将我的“谨慎之词”写给所有那些生活在一小部分人物身上的人。 感谢所有提供宝贵意见和时间的人。