【发布时间】:2011-11-16 01:25:06
【问题描述】:
我的页面设置signin_time 将其设置为NOW(),当用户成功登录页面时将logged_in 设置为1。我想做的是在用户注销时将signout_time 设置为NOW()。为此,我使用以下查询
$stmt = $db->prepare("UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW(),`ckey`= '', `ctime`= '' WHERE user_id=? AND logged_in=1") or die($db->error);
我试图执行这个查询。它没有返回任何错误消息,但我也没有注意到 db 表有任何变化,php 错误日志也没有显示任何内容。
也许我有语法错误(我正在设置logged_in=0 where logged_in=1)。我不知道该怎么做。也许我应该搜索signout_time=0 所在的行?有什么建议么?
更新
这是整个函数:
function logout() {
global $db, $wsurl;
if (isset($_SESSION['user_id'])) {
$userid = $_SESSION['user_id'];
$stmt = $db->prepare("UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW() WHERE user_id=? AND logged_in=1") or die($db->error);
} else {
$userid = $_COOKIE['user_id'];
$stmt = $db->prepare("UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW(),`ckey`= '', `ctime`= '' WHERE user_id=? AND logged_in=1") or die($db->error);
}
$stmt->bind_param("i", $userid) or die($stmt->error);
$stmt->execute() or die($stmt->error);
$stmt->close();
$_SESSION = array(); //destroy all of the session variables}
session_destroy();
foreach ($_COOKIE as $c_id => $c_value) {
setcookie($c_id, '', 1, "/");
}
header("Location: " . $wsurl);
}
【问题讨论】:
-
您是否尝试将其包装在 try/catch 中?也许你的
$userid没有设置好。试试var_dump($userid),让我知道你得到了什么。 -
在绑定之前,您是否仔细检查了 $userid 中的值?查询本身似乎很好。
-
你的
$user_id喜欢什么? -
我回显了它给我的真实号码的用户 ID
标签: php mysql mysqli prepared-statement