我试图将 time_out 时间更新为捕获用户 time_in 的最后一个 id,我的以下代码给了我这个错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
这是我的 logout.php
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");
$id = $_SESSION['MEMBER_ID'];
$sql = "UPDATE hours SET time_out = '".$dt."' WHERE member_id IN (SELECT MAX(hours_id) FROM hours WHERE member_id = '".$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']);
这是架构
`hours_id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`member_name` varchar(32) NOT NULL,
`team` varchar(32) NOT NULL,
`time_in` datetime NOT NULL,
`time_out` datetime DEFAULT NULL,
`dated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
unset($_SESSION['TEAM']);
某人的这个查询可能出了什么问题?
最佳答案
像这样关闭查询中的圆括号吗?
$sql = "UPDATE hours SET time_out = '".$dt."' WHERE member_id IN (SELECT MAX(hours_id) FROM hours WHERE member_id = '".$id."')";
注意:停止使用已弃用的 mysql_* 版本。有更好的选择,例如 mysqli 或 pdo
编辑
通过单个查询,您可以像这样解决问题
$sql = "UPDATE hours SET time_out = '".$dt."' WHERE member_id IN (SELECT MAX(hours_id) FROM (SELECT MAX(hours_id) FROM hours WHERE member_id = '".$id."') AS t)";
请告诉我它是否适合您
关于php - 尝试更新小时表中的 time_out 时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38671027/