PHP—使用两个下拉菜单中的两个搜索词进行搜索


PHP - Do a search using two search terms from two drop-down menus

我试图使用两个下拉框来搜索我的数据库。($k)服务及($t)市镇。但只有一个术语是工作的,我是PHP新手。我知道我知道使用mysqli,我只是想让它工作并稍后更新。

$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%'";
}
$dbconnect=@mysql_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)) {

也许这样可以工作?

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;

    $dbconnect=@mysql_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*/
        }
    }
}

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

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