【问题标题】:Update sql table on logout注销时更新 sql 表
【发布时间】:2016-06-08 15:40:45
【问题描述】:

我想在成功注销时更新表格字段。但我的代码似乎不起作用。

下面是我的代码。它会破坏会话,但不会更新表字段。

<?php
session_start();
if (session_destroy()) {
    include "lib/session.php";
    include "lib/mysql.php"; 
    $session_id = $_SESSION['grammarly_sessid'];
    $q=mysqli_query("update online_status set status='OFF' where id = '$session_id'");
} else {
    exit;
}

unset($_SESSION['grammarly_sessid']);
session_start();
session_destroy();
header('location:../login.php')
?>

请帮忙。

【问题讨论】:

  • 嘿,你不需要在这里像 if(session_destroy()) 那样使用条件,当 session_destroy 被调用时,它会破坏完整的会话值,并且不会使用你正在调用的会话变量在条件 $_SESSION['grammarly_sessid']
  • 好的。那么我的代码的最佳格式是什么?
  • 并且不要使用 session_start();在你的脚本中不止一次。这需要在一切之前调用..
  • 其实session_destroy()不会取消设置任何与会话相关的全局变量,或者取消设置会话cookie”(参见php documentation

标签: php session mysqli logout


【解决方案1】:
session_start();
include "lib/session.php";
include "lib/mysql.php"; 
$session_id = $_SESSION['grammarly_sessid'];
$q          = mysqli_query("update online_status set status='OFF' where id = '$session_id'");    
unset($_SESSION['grammarly_sessid']);
session_destroy();
header('location:../login.php');

在这种情况下,您不必添加条件..

【讨论】:

  • 尝试打印出您的 $session_id,打印出什么吗?
  • 他将mysqli_query()作为一个函数使用,而不是作为OOP方法,这意味着他需要将mysqli链接标识符传递给mysqli_query()函数的第一个参数。请参阅我的更新答案。
  • 是的,没有检查 mysqli_ 中的“i”。没错@DanL
【解决方案2】:

您需要在销毁会话之前获取会话 ID。

如果您不将其用作 OOP 对象,您还需要将 MySQLi 标识符传递给 mysqli_query() 函数的第一个参数。

<?php
session_start();
$session_id = $_SESSION['grammarly_sessid'];

$mysqli = mysqli_connect('localhost', 'mysql_user', 'mysql_pass');
mysqli_select_db($mysqli, 'database_name');

if(session_destroy())
{
include "lib/session.php";
include "lib/mysql.php"; 
$q=mysqli_query($mysqli, "update online_status set status='OFF' where id = '$session_id'");
}
 else{
exit;
}

header('location:../login.php')
?>

【讨论】:

  • 我已经更新了我的答案。问题是您没有在 mysqli_query() 函数中使用 mysqli 连接引用。为了不必使用 $mysqli 第一个参数,您必须使用 mysql 作为 OOP 对象。
猜你喜欢
  • 1970-01-01
  • 2017-10-14
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多