我正在尝试为我的工作场所组建一个基本的协调应用程序,我为每个工作人员确保了独特的登录。该应用程序的一部分是显示(使用Ajax以保持最新)显示下一个案例加载的可用或不可用的人。简单的说;我可以毫不费力地使用 fixed 值来更新数据库,但我希望更新脚本是动态的,因为它会更新正确的用户状态。
这是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枚举,它可以正常工作。即;
<?php
require_once("data/connect.php");
echo $_SESSION['user_name'];
?>
这可以很好地填充各种用户名或者它设置为从会话中回显的内容,但是当我尝试将其用作写入数据库/表的变量时,它就会失败。即使在开始时放置'session_start()'。
进一步更新
我尝试在主页面中运行脚本,并在加载时使用会话变量运行脚本!但是当作为被调用文件运行时仍然不会。不知道那里我做错了什么。
答案 0 :(得分: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;
答案 1 :(得分:0)
在任何会话信息请求之前,您需要告诉PHP您要使用会话功能:在require
行之后,但在$user_name = $_SESSION['user_name'];
行之前,输入session_start();
答案 2 :(得分:0)
问题似乎与我的SESSION一起转移到我发布的php脚本,由我的主页调用。我已将其整合到主页面中,并在登录时执行&amp;注销而不是。