0

我正在使用 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
4

5 回答 5

1

首先,应该将 $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

ETC...

于 2012-05-29T14:11:15.587 回答
1

You have to add quotes around your date string:

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
WHERE date='$today'")or die(mysql_error());
于 2012-05-29T14:09:26.430 回答
1

$today需要在变量周围加上引号。还需要反引号date列名,因为它是保留的。

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
      WHERE `date`='$today'")or die(mysql_error());
于 2012-05-29T14:10:10.830 回答
0

如果您在 mysql 中使用时间戳作为数据类型,那么您需要先将日期转换为 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'"

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

SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE date = NOW()
于 2012-05-29T14:11:26.803 回答
0

尝试

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

或者

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

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

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

此外,用单引号包裹日期值......

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe
WHERE date = '" . $today . "'")
于 2012-05-29T14:15:48.987 回答