2016-10-04 56 views
2

我想用两个下拉框来搜索我的数据库。 ($ k)服务和($ t)镇。但只有一个术语是工作我也是新的PHP。我知道我知道使用mysqli我只是想让它工作并稍后更新。PHP - 使用两个下拉菜单中的两个搜索词进行搜索

$k = $_GET['k']; 
$t = $_GET['t']; 

$i = 0; 
$term1 = explode(" ", $k); 
$term2 = explode(" ", $t); 

$result = array_merge($term1, $term2); 

$query ="SELECT * FROM clients WHERE "; 

foreach ($result as $each) { 
    $i++; 
    if ($i == 1) 
     $query .= "company_services LIKE '%$each%'" . "OR town LIKE '%$each%'"; 
} 
[email protected]_connect($mysql_host, $mysql_user, $mysql_password); 
$db = mysql_select_db('db_name'); 

$query = mysql_query($query) or die(mysql_error());; 
$numrows = mysql_num_rows($query); 
if ($numrows > 0){ 

    while ($row = mysql_fetch_assoc($query)) { 
+0

您可以直接使用'company_services LIKE'%$ term1%''。“或镇LIKE'%$ term2%'''而不是使foreach复杂化,因为它似乎只循环一次 – jitendrapurohit

回答

3

也许这样的事情可能会奏效?

if(isset($_GET['k'], $_GET['t'])){ 

    $term1 = explode(" ", $_GET['k']); 
    $term2 = explode(" ", $_GET['t']); 

    $result = array_merge($term1, $term2); 
    $clauses=array(); 

    $query ="select * from `clients`"; 

    foreach($result as $word) { 
     $clauses[]="(`company_services` like '%$word%' OR `town` like '%$word%')"; 
    } 

    $query = !empty($clauses) ? $query . ' where ' . implode(' or ',$clauses) : $query; 


    [email protected]_connect($mysql_host, $mysql_user, $mysql_password); 
    $db = mysql_select_db('db_name'); 

    $query = mysql_query($query) or die(mysql_error()); 
    $numrows = mysql_num_rows($query); 


    if ($numrows > 0){ 
     while ($row = mysql_fetch_assoc($query)) { 
      /* do stuff*/ 
     } 
    } 
} 
0

$result = array_merge($term1, $term2);
这将设置$导致对值的数组。目前,您只是使用$ result-array的第一个值。您的foreach循环改成这样使用所有的值:

foreach ($result as $each) { 
 
    $query .= "company_services LIKE '%$each%' OR town LIKE '%$each%' "; 
 
}