我有:
两种用于搜索的输入类型。一个是城市,州,邮政编码类型的文本字段。另一种是商业搜索“类型”的选择下拉列表。
我想返回“location”输入的结果以及“type”输入。因此,如果用户在“位置”输入中搜索纽约NY,83745并且在“类型”输入中仅Walgreens输入纽约纽约的Walgreens,则返回83745。 HOWEVER ,在我的查询中使用CONCAT方法限制了这一点。用户可以在“位置”输入中使用逗号和空格。但是,“类型”输入一起被忽略。如果我取出CONCAT并使用基本的单个WHERE子句,则两种搜索类型只能一起工作。那么,我怎样才能让CONCAT和"AND style LIKE '%$search_type%'";
一起工作?
$query = "SELECT street, city, state, type FROM location
WHERE
CONCAT(city, ', ', state, ', ', zip_code) LIKE '%$search_location%'
OR CONCAT(city, ' ', state, ' ', zip_code) LIKE '%$search_location%'
AND type LIKE '%$search_type%'";
答案 0 :(得分:0)
尝试使用布尔全文搜索 http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html
$query = "SELECT street, city, state, type FROM location
WHERE
MATCH ($search_location) AGAINST (CONCAT(city, ' ', state, ' ', zip_code) IN BOOLEAN MODE)
AND type LIKE '%$search_type%'";
我认为这个例子不起作用,但如果你读到这个,你就会明白
答案 1 :(得分:-1)
mysql不支持此语法。 concat可以合并字符串,而不是列。
这是你最好的选择,我相信:
$query = "SELECT street, city, state FROM location
WHERE
( city LIKE '%$search_location%' or state LIKE '%$search_location%' or zip_code LIKE '%$search_location%' )
AND style LIKE '%$search_type%'";
正确匹配工作:
ALTER TABLE location ADD FULLTEXT(city, state, zip_code);
$query = "SELECT street, city, state FROM location
WHERE match (city, state, zip_code) against ('$search_location' in boolean mode)
AND style LIKE '%$search_type%'";