如何更新会话空值

How to update session empty value

提问人: 提问时间:12/21/2019 更新时间:12/21/2019 访问量:61

问:

我正在PHP MYSQLI中创建消息对话删除脚本。我正在尝试更新会话空值。我的问题我可以更新列。但是我无法更新传入的消息列。我想更新或列空会话值。from_deleteto_deletefrom_deleteto_delete

这是我的 pm 表

id  from_id     to_id    msg               sent_date              from_delete      to_delete
1   2           3        hi how are you?   2019-12-05 04:14:20    0                3
2   3           2        fine              2019-12-05 05:15:58    0                2
3   2           3        hi                2019-12-05 03:20:34    0                3     
4   5           2        hi                2019-12-05 08:30:40    0                2

这是我的源代码

<?php

require_once "config.php";
if (isset($_GET['deleteid'])) {
    $id = $_GET['id'];
    $session_id = $_SESSION['userid'];
}
$stmt = $con->prepare("UPDATE pm SET from_delete = ? or to_delete =? WHERE id=? ");
$stmt->bind_param("sss", $session_id, $session_id, $id);
if ($stmt->execute()) {
    echo"deleted successfully";
} else {
    echo "Failed to delete<br/>";
}
PHP 会话 mysqli

评论

0赞 Dharman 12/21/2019
这是什么意思?“我想创建始终from_delete或to_delete应该更新空会话值”是什么意思?from_delete = ? or to_delete =?
0赞 12/21/2019
我可以更新from_delete列我的会话 ID,但我无法更新to_delete会话 ID
0赞 Dharman 12/21/2019
你试过吗SET from_delete = ?, to_delete =?
0赞 12/21/2019
是的,我已经检查过了,但同样我无法更新to_delete列

答:

0赞 Triby 12/21/2019 #1

我认为最好先阅读并检查消息是否属于当前用户作为发送者或接收者,然后为他删除。但是您可以尝试同时设置正确的过滤器。

<?php

require_once "config.php";
if (isset($_GET['deleteid'])) {
    $id = $_GET['id'];
    $session_id = $_SESSION['userid'];
}
// Mark from_delete only if user is the sender
$stmt = $con->prepare("UPDATE pm SET from_delete = ? WHERE id = ? AND from_id = ?");
$stmt->bind_param("sss", $session_id, $id, $session_id);
if ($stmt->execute()) {
    echo"deleted successfully";
} else {
    echo "Failed to delete<br/>";
}
// Mark to_delete only if user is receiver
$stmt = $con->prepare("UPDATE pm SET to_delete = ? WHERE id = ? AND to_id = ?");
$stmt->bind_param("sss", $session_id, $id, $session_id);
if ($stmt->execute()) {
    echo"deleted successfully";
} else {
    echo "Failed to delete<br/>";
}

评论

0赞 12/21/2019
我检查了您的脚本,但发送者或接收者没有更改任何内容
0赞 Triby 12/21/2019
进行一些调试以查看值是否正确,var_dump($id, $session_id);然后,打印查询并在 PhpMyAdmin 上进行测试。
0赞 12/21/2019
不显示任何错误消息,显示已成功删除消息,但未更改任何内容 PhpMyAdmin
0赞 Triby 12/21/2019
该消息表示查询已成功执行,但未在数据库中进行任何更改,这就是为什么您需要检查数据和查询以查找问题所在的原因。
1赞 12/26/2019
你的剧本对我帮助很大,非常感谢你