PHP需要帮助来过滤日志文件


PHP need help to filter a loggfile

所以我的问题是,我得到了一个通过loggfile循环的代码,然后将它们与树结构进行比较,然后给它们一个与结构中的id相对应的id。为了不出现太多糟糕的交通,我整理了所有302及以上的车辆。

现在的问题是,我想统计一些在结构中具有特定页面类型的特定302。这不是一个大问题,因为我可以将loggfile中的url与树结构中的url进行匹配,但有些loggfile在结构处于友好url时不使用友好url。这会产生问题,但我可以将查询参数中的id与结构中的id进行匹配。然后,我制作一个字符串,其中包含与我想要的特殊页面类型相匹配的所有id。

问题是我无法让Mysql语句工作,它看起来是这样的。

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

示例查询可能看起来像"id=4&epslanguage=sv",所以我只想检查id=X部分。

这是一个有点容易的问题,真的我只是被卡住了,无法让它发挥作用,任何帮助都很感激!

我想你的问题是:如何从行的那部分提取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)

所以您已经有了ID,并且想要过滤MySQL查询以只获取这些行?

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