将今天的日期与数据库中列出的日期进行比较

时间:2012-05-29 14:06:55

标签: php mysql date

我正在使用mysql和php将所有用户拉出mysql数据库,这些用户等于今天的日期。我遇到的问题是每当我运行以下代码时,我都会收到错误。通过看起来错误似乎与年份有关,或者它可能不喜欢它中的点,但我不确定?。

<?php
$today = date("d.m.y");
$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
 WHERE date=$today")or die(mysql_error());

while($row = mysql_fetch_array($result))
  {
  echo $row['name'] . " " . $row['email']. " " . $row['date'];
 echo "<br />";
  }

  ?>

这是它抛出的错误:

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 '.12' at line 2

5 个答案:

答案 0 :(得分:2)

首先,应将$ today作为字符串添加到SQL查询中:

mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` = '$today'");

date是SQL保留字,因此必须使用反引号进行转义...

但我建议使用MySQL本机函数和常量,如NOW()CURRENT_TIMESTAMPSYSDATE等......

SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` = NOW()
SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` < NOW() - INTERVAL '2' DAYS
SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` > NOW() + INTERVAL '5' HOURS

等...

答案 1 :(得分:1)

您必须在日期字符串周围添加引号:

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
WHERE date='$today'")or die(mysql_error());

答案 2 :(得分:1)

您的$today变量周围需要引号。还需要反复添加date列名称,因为它已保留。

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
      WHERE `date`='$today'")or die(mysql_error());

答案 3 :(得分:0)

如果你在mysql中使用timestamp作为数据类型,那么你需要先将日期转换为unix时间戳。

$today = strtotime("now");

或者如果您使用的是日期时间或日期数据类型,则正确的格式为

YY-MM-DD, so you need to create the date accordingly. 

$today = ('Y-m-d');

并且在您的查询中,您缺少单引号。

"SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE date = '$today'"

然而,您可以直接使用MYSQL NOW()来比较日期而不使用PHP的日期函数。

SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE date = NOW()

答案 4 :(得分:0)

尝试

$today = date("d-m-Y"); 

OR

$today = date("Y-m-d"); 

另外,检查日期列的格式是否等于date()的返回值的格式。

如果您使用过DATETIME数据类型,则可能需要使用匹配格式。

另外,用单引号包装日期值...

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
WHERE date = '" . $today . "'")