因此,我试图找到一个脚本,可以启动我创建一个'精炼搜索'面板,这将是一个表格,希望与Ebay目前接近的东西。
虽然我知道这将是一个表单并使用GET方法,但我找不到一个脚本可以解析多个参数的URL并动态更新查询。
我不确定如何在没有百万和一个if语句的情况下做到这一点。 (大约10个左右可能的GET变量,但可能会更快。)
所以我需要一个简单的:
foreach GET add WHERE field=GET[variable]
你知道的任何现成的脚本吗?
答案 0 :(得分:3)
我不知道有一些罐装脚本可以做到这一点。
但是你自己写它很容易。
<?PHP
$valid_fields = array('field1','field2',...'fieldN');
$where = "WHERE 1=1 ";
foreach($valid_fields as $fname){
if (! empty($_GET[$fname])){
$where .= " AND $fname='" . mysql_real_escape_string($_GET[$fname]) ."'";
}
}
此代码只是循环遍历您的预期输入变量,如果它们作为$ _GET中的参数传递,则将AND与WHERE子句一起广告。
然后你只需将$ where放在查询结尾处(无论它是什么):
$sql = 'SELECT * FROM some_table ' . $where;
编辑示例代码以隐藏列名称:
<?PHP
//keys are parameter names in _GET, values are database column names.
$fieldmap = array(
'fname'=>'first_name',
'lname'=>'last_name'
);
$where = '1=1 ';
foreach($fieldmap as $get_name => $col_name){
if (! empty($_GET[$get_name])){
$where .= " AND $col_name = '" . mysql_real_escape_string($_GET[$get_name]) . "'";
}
}
?>
答案 1 :(得分:0)
我对PHP几乎一无所知,但是在这里有一些关于检索和解析查询字符串的讨论(向下滚动一下):
http://us2.php.net/manual/en/reserved.variables.get.php
您可以从中提取一些有用的代码来提取所有GET参数并使用它们来构造WHERE子句。我不确定你的数据模型是如何设置的,所以我不能提供任何详细的建议 - 除了通常的建议,清理你的所有输入,这样你就不会得到Bobby Tables在你的手上。
答案 2 :(得分:0)
你的意思是这样的吗?
<?php
$query = "SELECT [WHATEVER YOU'RE SELECTING] FROM your_table WHERE ";
$length = count($_GET);
$count = 0;
foreach($_GET as $key => $value){
if($count <= $length){
$query .= "$key='{$value}' OR ";
}else{
$query .= "$key='{$value}'";
}
$count++;
}
?>
这将循环遍历$ _GET数组,将key ='value'类型字符串添加到查询字符串中。然后,一旦你完成了对数组的递归,你可以用完整的查询字符串做任何你想做的事。
按照惯例,在收集输入时使用标准清理功能(strip_slashes,mysql_real_escape_string等)