WHERE date BETWEEN不起作用


WHERE date BETWEEN not working

我正试图通过计算开始日期和结束日期之间自动整数(id)的出现次数来按日期范围计算登录次数。

我从上一页的表格中得到开始日期和结束日期(y-m-d)。

$start_date=$_POST['start_date']; /*in this case its "2014-10-10"*/
$end_date=$_POST['end_date']; /*in this case its "2014-10-20"*/

$sql = <<<SQL
SELECT id, COUNT(*) as login_count FROM `usage`  
GROUP BY id   
WHERE date
BETWEEN $start_date AND $end_date
SQL;

然而,我不断得到以下语法错误

"运行查询时出错[您的SQL语法有错误;请查看与MySQL服务器版本相对应的手册,以获取在第3行的'WHERE date BETWEEN 2014-10-10 AND 2014-10-20'附近使用的正确语法]"

我做错了什么?

try it 
$sql = <<<SQL
SELECT id, COUNT(*) as login_count FROM `usage`  
WHERE date
BETWEEN '$start_date' AND '$end_date'
GROUP BY id   
SQL;

您的$sql应该是:

$sql = <<<SQL
SELECT id, COUNT(*) as login_count FROM `usage`  
WHERE date
BETWEEN $start_date AND $end_date
GROUP BY id   
SQL;

因为GROUP BY CLAUSE在语法上是AFTER WHERE

您需要将''放在sql中的日期文字周围,如下所示:

$response = mysql_query("SELECT * FROM `db`.`$sql_table` WHERE (date BETWEEN '$end_date' AND '$start_date')  ORDER by id ASC ")or die(mysql_error());

首先,您应该引用日期'$start_date'和'$end_date',并且您应该确保对这些值进行转义以避免SQL注入。

您的SQL中有错误。试试这个:

SELECT id, COUNT(*) as login_count FROM `usage`  
WHERE (date BETWEEN $start_date AND $end_date)
GROUP BY id;