下面是我的代码
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"值匹配。因此,这花了我一整天的时间,几乎让我丢了工作。在某个地方,一个小小的"-"把整个卫星发射火箭弄坏了。所以,在某种程度上,我在博客上对所有那些生活依赖于一点点性格的人发出了我的"警告"。感谢所有提供宝贵意见和时间的人。