无法从php执行更新sql


Unable to perform Update sql from php

下面是我的代码

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");
    }

请求您的意见,这段代码单独不执行,更新不执行…

你准备了两次相同的查询

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

我终于开始调试插入的每一个变量值,如上面的bindParam()所示。事实证明,在默认情况下或由于某些字符串处理,在这些变量的许多值中插入了一个空格(" ")。因此,这个空间导致的是,它不允许数据库上的值与来自视图的输入数据匹配。因此,特别是"id"字段接收带空格的值…像"00100001"一样,虽然它不容易看到,但它从不与db表中的"00100001"值匹配。因此,这花了我一整天的时间,几乎让我丢了工作。在某个地方,一个小小的"-"把整个卫星发射火箭弄坏了。所以,在某种程度上,我在博客上对所有那些生活依赖于一点点性格的人发出了我的"警告"。感谢所有提供宝贵意见和时间的人。