2010-07-14 38 views
0

这是我目前的功能:如何在单个mysql查询中集成日期检查功能?

$result = $db->sql_query("SELECT * FROM data1,data2,data3,data4 WHERE person='" .$name. "'"); 

$row = $db->sql_fetchrow($result); 
$day = $row['regtime']; 
$days = (strtotime(date("Y-m-d")) - strtotime($row['regtime']))/(60 * 60 * 24); 
if($row > 0 && $days < 15){ 

$row = ['name']; 
$row = ['age']; 

//etc 

但上述功能无法在双行regtime阅读。我在看的是我可以俱乐部功能到单个查询?如果是的话如何?

+0

其实我的问题是如何在该mysql_query中包含日期检查函数? – mathew 2010-07-14 08:19:38

回答

0

目前您只有一个查询在这个功能。如果您的摘录中没有遗漏,则不存在重复查询。如果你的意思是你使用了两次$ row ['regtime'],那么这是一个数组读取而不是查询。

1

你是说你只想要结果集中最近15天的行吗?

你不包括你如何加入data1-4表,并且你的person字段对SQL注入是开放的,所以我将这些部分留出,但是下面包括的是仅仅过滤掉记录的方法最后15天:

SELECT * 
    FROM data1 
    WHERE person = :name 
    AND regtime >= NOW() - INTERVAL 15 DAY 
+0

其实我的问题是如何在mysql_query中包含日期检查函数?还有一个我如何防止sql注入? – mathew 2010-07-14 08:20:09

+0

使用mysql_real_escape_string()或准备语句来防止sql注入。 – Naktibalda 2010-07-14 09:12:15

+1

@mathew其中之一,你应该尽量少用查询中的函数。如果我是对的,那么mysql'NOW()'函数将阻止查询缓存,这会降低性能。 其次,以防止SQL注入,你可以在MySQL的使用 - mysql_real_escape_string,做您的查询这样的: 'SELECT * FROM数据1,数据2,数据3,数据4 WHERE人= ' “.mysql_real_escape_string($名)。”'' 对于性能消耗,最好选择你需要的列,而不是标记为**'*'**。 – Eugene 2010-07-14 09:13:51