PHP:插入日期作为字符串变为 -2008



当我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,

161, 3564578, 1234586723, -2008年,

应该是:

session_id, session_token, session_serial, session_date,

161, 3564578, 1234586723, 2018-09-19

您没有转义日期值,并且数据库中session_date的字段类型似乎是一个整数。

由于您在生成 SQL 时没有转义该值,因此它被解析为19 - 09 - 2018,这取决于您运行此值的月份和日期,最终为-2008(十九减去九减去二千零十八(。

第一个解决方法是正确封装值(您应该为此使用预准备语句,因为这会自动为您处理它,但由于您可以信任数据(:

... 1234586723, '" . $endDate . "')

请注意,MySQL可能需要日期字段的YYYY-mm-ddISO格式的日期,因此您可能还希望将生成的日期字符串更改为该日期字符串。

最新更新