当我通过MySqlI查询来添加会话信息时,我添加了字符串形式的日期,但是当我在phpMyAdmin中查找时,日期是-2008。我回显出日期字符串,它是正确的日期。与数据库的连接正常
PHP:
$endDate = date('d-m-Y',strtotime("+30 days"));
$sresult = mysqli_query($con, "INSERT INTO `sessions`(`session_id`, `session_token`, `session_serial`, `session_date`) VALUES (".rand(120, 1200).",3564578,1234586723, ".$endDate.")") or die("Failed to query database ".mysqli_error($con));
echo "Login success!!! Welcome ".$row['uid']."".$endDate; #Correct Date
phpMyAdmin:
session_id,session_token,session_serial,session_date,
3564578,1234586723,-2008,
应该是:
session_id,session_token,session_serial,session_date,
161,3564578,1234586723,19-09-2018
发布于 2018-08-21 03:58:49
您没有对日期值进行转义,而且数据库中session_date
的字段类型似乎是一个整数。
由于在生成SQL时没有转义该值,因此将其解析为19 - 09 - 2018
,根据您运行该语句的月份和日期,最终结果为-2008
(19减9减2,018)。
第一个修复方法是正确地包含值(您应该为此使用准备好的语句,因为它会自动为您处理它,但因为您可以信任数据):
... 1234586723, '" . $endDate . "')
请注意,对于日期字段,MySQL可能需要YYYY-mm-dd
ISO格式的日期,因此您可能也希望将生成的日期字符串更改为该格式。
https://stackoverflow.com/questions/51937663
复制相似问题