我正在開發一個網站,該網站允許用戶列出待售的船隻和遊艇。有一個mysql數據庫有一個表「遊艇」,其他領域有「製造」和「模型」。MySql搜索兩個組合字段的查詢
當有人來到該網站尋找出售船隻時,有一個搜索表單,其中一個選項是將製造商和/或模型輸入到文本字段中。有關在搜索結果頁上的條款是以下
WHERE (make LIKE '%$yacht_make%' OR model LIKE '%$yacht_make%')
這是工作,如果有人進入要麼廠名或模型但如果他們進入兩者。
例如,如果有人輸入「Jeanneau」,製造商會發現該製造的船,或者如果他們進入了「Sun Odyssey」模型,它會找到該模型的船,但是如果他們進入「 Jeanneau Sun奧德賽「它變得空虛。
有沒有一種方法來編寫一個查詢,其中所有三種方式進入上述搜索條件會找到船?
這裏是網站http://yachtsoffered.com/
感謝,
羅布·芬威克
編輯:
查詢是建立與PHP腳本這裏是腳本
if(!empty($yacht_id)) {
$where = " WHERE yacht_id = $yacht_id ";
} else {
$where = " WHERE (make LIKE '%$yacht_make%' OR model LIKE '%$yacht_make%') ";
if(!empty($year_from) && !empty($year_to)){
$where .= "AND (year BETWEEN $year_from AND $year_to) ";
}
if(!empty($length_from) && !empty($length_to)){
$where .= "AND (length_ft BETWEEN $length_from AND $length_to) ";
}
if(!empty($price_from) && !empty($price_to)){
$where .= "AND (price BETWEEN $price_from AND $price_to) ";
}
if ($sail_power != 2){
$where .= "AND (sail_power = $sail_power) ";
}
if (count($material_arr) > 0){
$material = 'AND (';
foreach ($material_arr as $value) {
$material .= ' material LIKE \'%' . $value . '%\' OR';
}
$material = substr_replace ($material , ') ' , -2);
$where .= $material;
}
if (count($engine_arr) > 0){
$engine = 'AND (';
foreach ($engine_arr as $value) {
$engine .= ' engine LIKE \'%' . $value . '%\' OR';
}
$engine = substr_replace ($engine , ') ' , -2);
$where .= $engine;
}
if (count($type_arr) > 0){
$type = 'AND (';
foreach ($type_arr as $value) {
$type .= ' type LIKE \'' . $value . '\' OR';
}
$type = substr_replace ($type , ') ' , -2);
$where .= $type;
}
if (count($region_arr) > 0){
$region = 'AND (';
foreach ($region_arr as $value) {
$region .= ' region LIKE \'' . $value . '\' OR';
}
$region = substr_replace ($region , ') ' , -2);
$where .= $region;
}
$where .= 'AND (active = 1) ORDER BY yacht_id DESC';
}
$sql = "SELECT * FROM $tbl_name $where LIMIT $start, $limit";
$result = mysql_query($sql);
你可以發佈你的整個查詢? –
當兩個都進入你的搜索一個領域與製造和模型,所以它失敗了,你需要明確分開2,使用2個輸入,或拆分文本用戶輸入 – 2013-05-15 20:04:17
謝謝達貢,是的,我明白爲什麼它不是工作中,我想到了對兩個輸入字段進行篩選,但我想知道是否還有其他選項,但是吐出它們的問題是無法分辨哪些詞是模型的成分,我想我可以搜索每個詞單詞,但會帶來太多的結果。 –