2017-10-14 86 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!'; }