我正在开发一个网站,该网站允许用户列出待售的船只和游艇。有一个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
谢谢达贡,是的,我明白为什么它不是工作中,我想到了对两个输入字段进行筛选,但我想知道是否还有其他选项,但是吐出它们的问题是无法分辨哪些词是模型的成分,我想我可以搜索每个词单词,但会带来太多的结果。 –