php - 仅在每次注销时将 time_out 字段更新为数据库中最后插入的用户 ID?

标签 php mysql

所以我将用户 time_in 和 time_out 存储在小时表中,当用户登录时,我将日期和时间插入 time_in 字段,并且 time_out 值保持为 000:00:00:00 现在我如何在注销时更新 time_out 字段仅在最后插入的 ID 上更新日期和时间?

无论有多少次注销,它都应该仅在小时表中最后插入的用户 ID 上保持更新时间 time_out,但如果输入新的登录 ID,则它会更改为新的登录 ID,我尝试了类似的操作

$dt = date("年月日 h:i:s");

UPDATE hours SET time_out = '".$dt."' WHERE member_id = '".$_SESSION['MEMBER_ID']."'

小时表中的字段是

hours_id
member_id
member_name
team
time_in
time_out

我不知道如何实现其余的。感谢您的帮助

好的,这是我的 logout.php

<?php
include('config.php');
    //Start session
session_start();
if(!isset($_SESSION['MEMBER_ID']) || (trim($_SESSION['MEMBER_ID']) == '')) {
        header("location: index.php");
        exit();
}   
date_default_timezone_set('America/New_York');
$dt = date('Y-m-d h:i:s');      
$sql = "UPDATE hours SET time_out = '".$dt."' WHERE member_id IN (SELECT MAX(hours_id) FROM hours WHERE member_id = '".$_SESSION['MEMBER_ID']."'";
mysql_query($sql) or die(mysql_error());


    //Unset the variables stored in session
    unset($_SESSION['MEMBER_ID']);
    unset($_SESSION['LOGIN_NAME']);
    unset($_SESSION['PASS']);
    unset($_SESSION['TEAM']);   
?>

最佳答案

使用该用户条目的最大 ID 进行过滤:

$max = mysql_query("从小时中选择 MAX(hours_id) WHERE member_id = '".$_SESSION['MEMBER_ID']."'");

$row = mysql_fetch_row($max);

那么,您的原始查询将是:

更新小时 SET time_out = '".$dt."' WHERE hours_id = '".$row[0]."'

关于php - 仅在每次注销时将 time_out 字段更新为数据库中最后插入的用户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38670354/

相关文章:

php - 如何使用 Laravel 为不同的客户使用不同的数据库?

MYSQL - 数据库备份每个事务

php - PHP中的MYSQL执行

php - 如何使用mysql php显示缺席和存在

php - 地理位置 - PHP 数组排序

mysql - DBIx::Class 基结果类

mysql - 如何在不改变SQL模式的情况下处理0000-00-00 00 :00:00 datetimes in MySQL 5. 7

PHP 文件不会从 HTML PayPal 表单中提取 'AMOUNT'

mysql - 使用 '--direct' 选项的 Sqoop 失败,mysqldump 退出代码为 2 和 3

php - 剥离输入以完成纯文本