单击 PHP 中的收藏按钮后消息表中的日期列更新

我的系统中有一个最喜欢的按钮。每条消息都有一个收藏夹按钮,以及消息发送给用户的时间。现在,当用户收藏一个按钮时,消息的时间被插入到表中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();

}


我发现是我进行的更新查询导致了问题,但是为什么当我只指定切换列时它会更新日期列?


哔哔one
浏览 91回答 1
1回答

守候你守候我

问题出在数据库中,日期类型为时间戳并设置为默认 current_timestamp,因此每次更新时都会更新为当前时间。我将它设置为 NULL 并解决了问题
打开App,查看更多内容
随时随地看视频慕课网APP