MySQLi更新查询问题 [英] MySQLi update query issue

查看:43
本文介绍了MySQLi更新查询问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的页面设置signin_time将其设置为NOW(),当用户成功登录页面时将logged_in设置为1.我也想在用户退出时将signout_time设置为NOW().为此,我使用以下查询

My page sets signin_time sets it to NOW(), sets logged_in to 1 when user successfully signs into page. What I want to do is to set signout_time to NOW() when user signs out too. For this purpose I'm using following query

$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错误日志也没有显示任何内容.

I tried to execute this query. It didn't return any error message, but I haven't noticed any change in db table too, also php error log doesn't show anything.

也许我遇到语法错误(我正在设置logged_in=0 where logged_in=1).我不知道该怎么做.也许我应该搜索signout_time=0所在的行?有什么建议?

Maybe I have syntax error (I'm setting logged_in=0 where logged_in=1). I have no other idea how to do that. Maybe I should search for rows where signout_time=0? Any suggestions?

这是整个功能:

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);
}

推荐答案

您必须执行查询.

$userId = 1; // some number
$stmt->execute(array($userId));

或者您可以使用方法链接将它们组合为一个:

Or you could combine them into one using method chaining:

 $db->prepare(
     "UPDATE `ulog` SET `logged_in`=0, `signout_time`=NOW(),
     `ckey`= '', `ctime`= '' WHERE user_id=? AND logged_in=1"
 )->execute(array($userId));

此外,请确保已设置您的$userid.在它上做一个var_dump(),看看会得到什么.

Also, make sure your $userid is being set. Do a var_dump() on it and see what you get.

这篇关于MySQLi更新查询问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆