2017-10-14 81 views
-3
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"; 
    } 

我总是获得成功,但是当我到数据库时发现没有任何变化。准备的语句不起作用

+0

请添加评论表的模式? – IncredibleHat

+0

也可以帮助显示那里存在的短数据库转储,以查看您的'where'子句是否真正与表中的实际行匹配。 – IncredibleHat

+0

我的表架构是 ID user_id 消息 日期 –

回答

1

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

那么你应该怎么做,也是检查是否有数量的行受到影响。

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