我正在使用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
答案 0 :(得分:2)
首先,应将$ today作为字符串添加到SQL查询中:
mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` = '$today'");
date
是SQL保留字,因此必须使用反引号进行转义...
但我建议使用MySQL本机函数和常量,如NOW()
,CURRENT_TIMESTAMP
,SYSDATE
等......
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 . "'")