2012-07-25 78 views
0

所以我的問題是,我得到一個代碼,通過loggfile循環,然後將它們與樹結構進行比較,然後爲它們提供與結構中的id相對應的id。爲了避免很多不好的流量,我把所有的302和以上的數據整理出來。PHP需要幫助來過濾日誌文件

現在的問題是,我想要一些特定的302s來計算在結構中具有特定的頁面類型。這不是一個大問題,因爲我可以將loggfile中的url與樹結構中的url相匹配,但是一些loggfiles不使用友好的url,而結構處於友好的url中,這會產生問題,但我可以將id在結構中帶有id的查詢參數。然後我創建一個與我想要的特殊頁面類型匹配的所有id的字符串。

問題是這我不能讓Mysql聲明工作,它看起來像這樣。

$sqlQ1 = "SELECT `lid` FROM logfile WHERE date = '$date' AND ´query´ IN '$check'"; 

一個例子查詢可以是這樣的 「ID = 4 & epslanguage = SV」 所以我想只檢查ID = X的一部分。

這真是一個簡單的問題,我只是卡住了,不能得到它的工作,任何幫助表示讚賞!

+0

什麼是你的MySQL數據庫,你正在查詢? – Cups 2012-07-25 15:32:20

回答

1

我認爲你的問題是:如何從行的那一部分提取id?

「..所以我只想檢查id = X部分。」

一旦分離出字符串,那麼你可以使用:

$string = "id=4&abclang=sv"; 

parse_str($string); 

echo $id; // 4 

編輯 在其他反應輕:

$strings[] = "id=4&abclang=sv"; 
$strings[] = "id=45&abclang=en"; 

$vals = array(); 

foreach($strings as $string){ 
parse_str($string); 
$vals[] = $id ; 
} 

$in_clause = join(",", $vals) ; 
$sql = "SELECT lid FROM logfile WHERE something IN ($in_clause) "; 
echo $sql; // SELECT lid FROM logfile WHERE something IN (4,45) 
+0

我現在意識到我的問題是非常糟糕的公式化..但問題歸結爲這個我想能夠匹配的查詢ID與id的字符串,而不是必須循環通過整個loggfile,而是隻需詢問一個數據庫問題,並以我的數據庫中所有的唯一蓋子的形式獲得結果。然後使用我得到的蓋子來整理所有我想保留的loggfile行。 – 2012-07-25 09:31:58

+0

感謝,幫助一些,但問題是這樣的,我的數據庫問題看起來像這樣「SELECT lid FROM logfile WHERE query IN('4,45');」我知道有日誌文件表中有4和45的查詢中的行,但我沒有得到任何結果,我嘗試使用通配符作爲IN,但它不起作用。 – 2012-07-25 11:55:00

+0

該SQL代碼片段不正確。那些額外的報價在哪裏,4,5是從哪裏來的?找到並擺脫它們。 – Cups 2012-07-25 13:04:38

0

所以你的ID已經和要篩選的MySQL查詢以獲取這些行?

$check = Array(1, 2, 3, 4); 
$check = implode(",", $check); 
$sqlQ1 = "SELECT `lid` FROM logfile WHERE date = '$date' AND ´query´ IN ($check)"; 
+0

是的,我想從日誌文件表中獲得蓋子。蓋子是獨特的,如果我能得到那些問題已解決,但我的問題是,當查詢不只是id = 4或id = 45它是id = 45&lang = en&瓜=美味,所以我不能使用IN,我沒有想要循環遍歷整個日誌文件數據庫並在id上爆炸以獲取id,因爲它會將處理時間增加很多。 – 2012-07-25 09:56:16