2012-07-25 97 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