我的系统中有一个最喜欢的按钮。每条消息都有一个收藏夹按钮,以及消息发送给用户的时间。现在,当用户收藏一个按钮时,消息的时间被插入到表中favorite_messages。我的问题是,出于某种原因,日期列更新为当前日期,不应更新,它应该与发送消息时的日期保持一致。这是我的PHP代码:$user_id = $_SESSION['active_user_id'];extract($_GET);$id=$_GET['message'];$toggle = "yes";$q=$db->prepare("SELECT msgid,date,text FROM messages WHERE to_id=? and msgid=?");$q->bindValue(1,$user_id);$q->bindValue(2,$id);$q->execute();$row2=$q->fetch();$d=$row2['date'];$fav_questionq=$db->prepare("SELECT * FROM messages LEFT JOIN users ON messages.to_id=users.id WHERE users.id=? AND messages.msgid=?");$fav_questionq->bindValue(1,$user_id);$fav_questionq->bindValue(2,$id);$fav_questionq->execute();$frow=$fav_questionq->fetch();$fquestion= $frow['text'];$result = $db->prepare("SELECT * FROM fav_messages WHERE username=? AND message=?");$result->bindValue(1,$user_id); $result->bindValue(2,$id); $result->execute();if($result->rowCount()== 1 ){ $updateMessageQuery = $db->prepare("UPDATE messages SET toggle='no' WHERE msgid=?"); $updateMessageQuery->bindValue(1,$id); $updateMessageQuery->execute(); $deletequery=$db->prepare("DELETE FROM fav_messages WHERE message=?"); $deletequery->bindValue(1,$id); $deletequery->execute();} else { $updateMessageQuery = $db->prepare("UPDATE messages SET toggle='yes' WHERE msgid=?"); $updateMessageQuery->bindValue(1,$id); $updateMessageQuery->execute(); $insertquery = $db->prepare("INSERT INTO fav_messages (username,message,fav_question,fav_date) values(?,?,?,?)"); $insertquery->bindValue(1,$user_id); $insertquery->bindValue(2,$id); $insertquery->bindValue(3,$fquestion); $insertquery->bindValue(4,$d); $insertquery->execute();}我发现是我进行的更新查询导致了问题,但是为什么当我只指定切换列时它会更新日期列?
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
问题出在数据库中,日期类型为时间戳并设置为默认 current_timestamp,因此每次更新时都会更新为当前时间。我将它设置为 NULL 并解决了问题
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消