-1

我正在尝试为我的工作场所构建一个基本的协调应用程序,我已经为每个员工确保了唯一的登录名。该应用程序的一部分是显示(使用 Ajax 保持最新),显示下一个案例加载的可用或不可用。简单的说; 我可以毫不费力地使用固定值更新数据库,但我希望更新脚本是动态的,因为它将更新正确的用户状态。

这是 update.php 脚本的片段;

<?php
    require_once("data/connect.php");
    $user_name = $_SESSION['user_name'];     
    mysqli_query($con,"UPDATE users SET status = 'AVAILABLE' WHERE user_name='$user_name'");    
    mysqli_close( $con );
    exit;
?>

正如我在上面所说的,如果 WHERE 部分的值是固定值,例如特定用户的用户名 - 它可以工作。但是,一旦更改为会话变量,它就不会。有任何想法吗?

更新:

好的,在遵循以下建议之后

<?php
    require_once("data/connect.php");
    session_start();
    $user_name = $_SESSION['user_name']; 
    var_dump($user_name);

    mysqli_query($con,"UPDATE users SET status = 'ONLINE' WHERE user_name = '$user_name'"); 

    mysqli_query( $con, $query );
    var_dump( $query, $con->error );
    mysqli_close( $con );
    exit;

我明白了;

NULL NULL string(0) ""

更多信息;如果我以其他方式使用 $_SESSION veriables,它可以正常工作。IE;

<?php
require_once("data/connect.php");

echo $_SESSION['user_name']; 
?>

这可以很好地填充各种用户名或任何设置为从会话中回显的内容,但是当我尝试将其用作写入数据库/表的变量时,它就会崩溃。即使在开始时放置了“session_start()”。

进一步更新

我尝试在主页中运行脚本,并在加载时使用会话变量运行脚本!但是在作为被调用文件运行时仍然没有。不知道我在那里做错了什么。

4

3 回答 3

0

问题似乎与我的 SESSION 转移到我发布的 php 脚本有关,被我的主页调用。我已将它合并到主页中,它会在登录和注销时执行。

于 2013-09-19T23:59:23.360 回答
0

在使用会话数组之前需要启动会话

<?php 

require_once("data/connect.php");

//you missed this
@session_start();

$user_name = $_SESSION['user_name']; 

//validate the user name
if(!empty($user_name))
{
    mysqli_query($con,"UPDATE users SET status='AVAILABLE'
    WHERE user_name='$user_name'"); 

    mysqli_close($con);
}else{

      echo "user name is empty";

     //check your session is proper or not
      print_r($_SESSION);


}
exit;
于 2013-09-18T04:54:54.093 回答
0

在任何会话信息请求之前,您需要告诉 PHP 您要使用会话功能:在该require行之后,但在该$user_name = $_SESSION['user_name'];行之前,输入session_start();

于 2013-09-18T04:55:15.257 回答