2010-07-14 45 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