当日期>时,如何从数据库中检索数据?现在()

时间:2014-09-27 00:25:43

标签: mysql

我的目的是从我登录页面开始,我希望我的网站显示数据库中有多少更新数据。我的代码就像这样

$current = $_SESSION['date'];
$query2 = "SELECT * FROM gmaptracker1 WHERE datetime >= '$current'";

当我回显$current时,它显示27/09/14 : 06:53:24,因此$current是正确的,但是,当我请求数据库的数量date>='$current'时,我得到零虽然我已经将具有日期时间28/09/14 : 06:53:2429/09/14 : 06:53:24的数据插入数据库。

有人可以帮我摆脱这个吗?

1 个答案:

答案 0 :(得分:2)

很少,

您的代码似乎容易受到SQL注入攻击。仅仅因为您从会话中检索日期的内容,它并不意味着它是安全的。

另外,为什么需要它在会话变量中呢?如果您总是想要检索大于NOW()的日期,您可以这样写下您的查询:

SELECT * FROM gmaptracker1 WHERE datetime >= NOW()

引起我注意的部分是你存储日期的格式。

你说当你回复$_SESSION['date']时,价值是: 27/09/14:06:53:24

现在,这看起来根本不像日期格式。您的列实际上是datetime还是timestamp列?

如果它是VARCHAR或除datetimetimestamp以外的任何其他类型,那么MySQL无法知道您是否已知道试图检索将来发生的日期。

如果您已经存储了数据,那么它就不会像更改数据类型一样容易,因为您已有数据,并且数据格式错误。 MySQL存储日期时间信息的格式如下:

YYYY-MM-DD HH:MM:SS

根据您留下的评论,您不需要时间> NOW(),您需要登录的时间。现在,为什么您将该时间存储在变量中是有道理的。

问题在于您存储的格式。

由于您使用的是PHP,因此您必须以这种方式存储时间:

$time = new DateTime();
$_SESSION['date'] = $time->format("Y-m-d H:i:s");