根据URL变量进行搜索

时间:2012-04-08 14:27:01

标签: php mysql search

我希望我的搜索能够专注于URL字符串中的变量。目前它使用基于表单的搜索。

它使用此

<?php
    include('db.php');  // include your code to connect to DB.
    $tbl_name="mobile";     //your table name

$whereClauses = array(); 
if (! empty($_POST['Model'])) $whereClauses[] ="model='".mysql_real_escape_string($_POST['Model'])."'"; 
if (! empty($_POST['Mins'])) $whereClauses[] ="minutes='".mysql_real_escape_string($_POST['Mins'])."'"; 
if (! empty($_POST['Texts'])) $whereClauses[] ="texts='".mysql_real_escape_string($_POST['Texts'])."'"; 
if (! empty($_POST['Freegifts'])) $whereClauses[] ="free_gift='".mysql_real_escape_string($_POST['Freegifts'])."'"; 
if (! empty($_POST['Network'])) $whereClauses[] ="network_name='".mysql_real_escape_string($_POST['Network'])."'"; 
if (! empty($_POST['Merchant'])) $whereClauses[] ="merchant_category='".mysql_real_escape_string($_POST['Merchant'])."'"; 
$where = ''; 
if (count($whereClauses) > 0) { $where = ' WHERE '.implode(' AND ',$whereClauses); } 
$sql = mysql_query("SELECT * FROM $tbl_name".$where); 
?>

但是,我已将此添加到我的页面中:

<?php
    $model = $_GET['model']; //gets model from URL
    $mins = $_GET['mins']; //gets mins from URL
    $texts = $_GET['texts']; //gets mins from URL
    $freegift = $_GET['free-gift']; //gets mins from URL
    $network = $_GET['network']; //gets mins from URL
    $plan = $_GET['plan']; //gets mins from URL
?>

需要不是所有变量都是必需的。任何帮助将不胜感激。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

有许多选项会返回值或NULL:

<?php
       $model = (isset($_GET['model']) ? $_GET['model'] : NULL);
        $mins = (isset($_GET['mins'])  ? $_GET['mins']  : NULL);    
       $texts = (isset($_GET['texts']) ? $_GET['texts'] : NULL); 
    $freegift = (isset($_GET['free-gift']) ? $_GET['free-gift'] : NULL);
     $network = (isset($_GET['network'])   ? $_GET['network']   : NULL);
        $plan = (isset($_GET['plan'])  ? $_GET['plan']  : NULL);
?>

这将从相应的$ _GET元素中获取变量,仅当有一组时才会获得。


替代语法(更短):

<?php
       $model = ($_GET['model'] ? $_GET['model'] : NULL);
        $mins = ($_GET['mins']  ? $_GET['mins']  : NULL);    
       $texts = ($_GET['texts'] ? $_GET['texts'] : NULL); 
    $freegift = ($_GET['free-gift'] ? $_GET['free-gift'] : NULL);
     $network = ($_GET['network']   ? $_GET['network']   : NULL);
        $plan = ($_GET['plan']  ? $_GET['plan']  : NULL);
?>

替代方案(未经测试):

<?php
$vars = array('model','mins','texts','free-gift','network','plan');

foreach($vars as $value) {
    $$value = (isset($_GET[$value]) ? $_GET[$value] : NULL);
}
?>

修改 的 为了根据它设置WHERE子句,我建议:

<?php
$vars = array('model','mins','texts','free-gift','network','plan');

foreach($vars as $value) {
    $$value = (isset($_GET[$value]) ? $_GET[$value] : NULL);
    unset $vars[$value];  //sweeping the NULL ones
}
$where_clause = $vars[0]; //the only remaining value after previous cleanup
?>