两天前无法从数据库中获取数据

时间:2012-03-18 11:56:30

标签: php mysql

我在我的网站的另一个区域使用了这段代码,基本上它计算数据库中的数据行,现在它可以正常工作。

现在我想对另一个数据库进行另一次计数,但这次日期列是日期时间格式,查询似乎不起作用。

以下是我用来获取两天前一天的代码

$day_ago2 = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d") - 1, date("Y")));

以下是mysql代码,

 SELECT * FROM page_views WHERE date='$day_ago2' and  member ='$site_id'

我们将不胜感激。

由于

2 个答案:

答案 0 :(得分:0)

使用DATEDIFF()功能

SELECT * FROM page_views WHERE DATEDIFF(NOW(), date) = -2 and  member ='$site_id'

答案 1 :(得分:0)

尽量不要创建以mysql函数/运算符命名的MySQL字段(如“date”或“where”)。

如果您真的想在PHP端使用日期函数,无论出于何种原因,这是一种更易读的形式:

// strtotime can take neat english input
$day_ago = date('Y-m-d', strtotime("-2 day") );

你当然会这样做:

SELECT * FROM page_views WHERE date(`date`)='$day_ago' and  member ='$site_id'

编辑:

如果从网页上获取输入,请务必清理所有输入字段。 Day_ago是安全的,因为带有用户输入的strtotime()会更糟糕地给你一个0.但是,确保$ site_id是安全的。例如,在查询之前发出此信息:

$site_id = intval( $_GET['site_id'] );

$site_id = mysql_real_escape_string( $_GET['site_id'] );