Mysql 更改数据库中的标志以显示某人是;“在线”;但是它';它不工作了
下面是正在发生的事情的一些细目 我现在遇到的最大问题是,在login.php中 更改数据库中的标志以显示某人处于联机状态Mysql 更改数据库中的标志以显示某人是;“在线”;但是它';它不工作了,mysql,linux,php,Mysql,Linux,Php,下面是正在发生的事情的一些细目 我现在遇到的最大问题是,在login.php中 更改数据库中的标志以显示某人处于联机状态 if($table=='chatmodels'){ $sql="update ".$table." set loginStatus=1 where user=".$id['user']; $upd=mysql_query($sql); 它应该将“chatmodels.loginStatus”更改为一个人一次等于1 已成功登录,但不起作用。它过去是
if($table=='chatmodels'){
$sql="update ".$table." set loginStatus=1 where user=".$id['user'];
$upd=mysql_query($sql);
它应该将“chatmodels.loginStatus”更改为一个人一次等于1
已成功登录,但不起作用。它过去是有用的
我很确定我的数据库配置有问题
这是我数据库的截图
从屏幕截图中,我看到
chatmodels
表位于qoc1
数据库中
由于您使用的是php,因此需要执行以下两项操作之一:
选项1:按如下方式使用:
mysql_select_db('qoc1')代码>在调用更新查询之前
if($table=='chatmodels'){
mysql_select_db('qoc1');
$sql="update ".$table." set loginStatus=1 where user=".$id['user'];
$upd=mysql_query($sql);
选项2:将qoc1
放入查询本身:
if($table=='chatmodels'){
$sql="update qoc1.".$table." set loginStatus=1 where user=".$id['user'];
$upd=mysql_query($sql);
试试看
其他需要记住的事情
- 如果表是MyISAM,它应该立即运行
- 如果表是InnoDB,请确保autocommit=1
美国东部时间2011年12月15日15:28更新
尝试将'or die'
放在$upd=mysql\u查询($sql)之后代码>并查看返回的基于mysql的错误消息您已经得到了一些建议,可以帮助您解决此问题,但是会话何时过期的问题呢?如果loginStatus==1
,是否存在cron作业或您发布的内容之外的其他内容,使非活动用户将其返回到0
我认为实现相同结果的更好方法是让每个页面加载提交一个“lastSeen”时间戳。然后,您的“在线”用户列表由“lastSeen”在可配置或可编程时间段内的所有人组成,而不是那些标志尚未重置为0的人。谢谢!我会给它一个快照数据库实际上是在一个配置文件中引用的,但我也尝试在你给我的两个示例中调用数据库,但仍然没有什么我不知道,它只是停止工作?我认为它可能与“id”字段有关,我不知道它是如何生成的,也不知道它的目的是什么。我将“id”设置为与“user”匹配,但这也没有帮助。在执行查询之前回显查询。检查它是否具有所有应迁移的数据。迁移是因为这似乎是代码问题,而不是数据库问题。有关此问题的持续性,请参阅此问题: