簡體   English   中英

PHP關鍵字搜索多個字段填充新輸入

[英]PHP Keyword search multiple fields populate new input

我有一個HTML輸入字段,該字段的值被分解並由字符串中的每個空格分隔。 然后,此字符串在數據庫中搜索匹配項,如果存在匹配項,則返回值,但是我想從原始字符串的一個表中搜索多個字段。

希望這會清除一切:

例如,如果用戶搜索“ Sheldon boys jumper”,我希望數據庫在數據庫的每個字段(例如[school_name],[sex],[product_type])中搜索這些關鍵詞中的每一個。 目前,我正在為一個字段工作,但是我想返回並收集所有三個字段的值。

這是我的代碼:

  if (empty($_POST) === false) {
    if(empty($_POST['title']) === true) {
    $no_data = '<div class="alert alert-danger center">Please enter a title</div>';
    } else {        
        $item_title = $_POST['title'];
        $keywords = explode(" ", $item_title);


        $query = "SELECT * FROM products WHERE ";
        foreach($keywords as $keyword) {
            $i++; // dump variable

            if($i == 1) { $query .= "product LIKE '$keyword' "; } 
                   else { $query .= "OR product LIKE '$keyword' "; }
        }
        $query = mysql_query($query);
        $numrows = mysql_num_rows($query);


        $row = mysql_fetch_assoc($query);
        echo $row['product'];
    }
}

您確實確實想使用PDO來確保安全和方便。 無論哪種方式,您仍然需要准備一個語句。

$fields = array('fields','you','want','to','search');
foreach($keywords as $keyword) {
    foreach ($fields as $field) {
    $i++; // dump variable
    if($i == 1) {
        $query .= "$field LIKE '$keyword' ";
    } else {
        $query .= "OR $field LIKE '$keyword' ";
    }
}

$ i == 1為弱。 您可以設置$ i = false,然后設置if($ i === true),從而不必為每個循環增加變量。 或者,在每一行的末尾(或不要在開頭)使用OR,也不要在最終查詢字符串中使用OR的最后一個實例。 這還將從每個循環中刪除if。

$fields = array('fields','you','want','to','search');
foreach($keywords as $keyword) {
    foreach ($fields as $field) {
        $query .= "$field LIKE '$keyword' OR ";
    }
}
$query = substr($query, 0, strlen($query) - 4);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM