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

时间:2012-07-25 08:38:07

标签: php mysql

所以我的问题是我得到了一个循环通过loggfile然后将它们与树结构进行比较的代码,然后给它们一个与结构中的id相对应的id。为了不获得大量不良流量,我整理了所有302及以上。

问题是现在我想要一些特定的302s来计算在结构中有特定的pagetype。这不是一个大问题,因为我可以将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部分。

这是一个简单的问题,我只是卡住了,无法让它发挥作用,任何帮助都表示赞赏!

2 个答案:

答案 0 :(得分:1)

我认为你的问题是:如何从一行的那一部分中提取id?

  

“..所以我只想检查id = X部分。”

一旦你隔离了那个字符串,你就可以使用:

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

parse_str($string);

echo $id; // 4

EDIT 根据其他回应:

$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)

答案 1 :(得分:0)

所以你已经拥有了ID并希望过滤MySQL查询以获取这些行吗?

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