准备好的陈述不起作用

时间:2017-10-14 19:14:55

标签: php mysql

if(isset($_SESSION['id'])) {
     $message=$_POST['message'];
     $cid=$_POST['cid'];
     $user_id=$_SESSION['id'];
     $stmt=$conn->prepare("update comments set message=? where id=? and user_id=?");
     $stmt->bind_param("sss",$message,$cid,$user_id);
     if(!$stmt->execute()){
          echo "error";
     } else {
          echo "success";
     }

我总是获得成功,但当我进入数据库时​​,我发现没有任何改变。

1 个答案:

答案 0 :(得分:1)

您正在尝试使用WHERE子句执行UPDATE。如果它实际上没有更新任何内容,它仍将被视为成功。原因!$ stmt-> execute()会发生,如果有一个sql错误,它就会失败。

那么你应该做的是检查num行是否受到影响。

if ( ! $stmt->affected_rows ) { echo 'nothing changed!'; }