针对数据库中的多个列/表搜索多个关键字。 PHP + MYSQL

时间:2014-05-02 12:31:30

标签: php mysql sql search

我正在为我的网站(http://jpdesigns.me/studentnights)制作网站搜索,并且目前已设法使用此问题中给出的答案后面的关键字实现跨多个表的搜索 - PHP mysql search multiple tables using a keyword

我目前正在搜索3张桌子 - 俱乐部
- 活动
- 音乐

我有以下问题:

$keystring = $mysqli->real_escape_string($_POST["s"]);
$keystring = strtoupper($keystring);
$key = "%".$keystring."%";

$search_stmt = $mysqli->prepare("SELECT id, name, type AS 'col3', city AS 'col4', 'Club' AS 'table' 
                                 FROM studentnights_clubs 
                                 WHERE UCASE(name) LIKE ? OR UCASE(city) LIKE ?
                                 UNION
                                 SELECT id, name, description AS 'col3', image AS 'col4', 'Event' AS 'table' 
                                 FROM studentnights_events 
                                 WHERE UCASE(name) LIKE ?
                                 UNION
                                 SELECT id, name, '' AS 'col3', '' AS 'col4', 'Genre' AS 'table' 
                                 FROM studentnights_music 
                                 WHERE UCASE(name) LIKE ?
                                 ORDER BY
                                    CASE
                                        WHEN name LIKE ? THEN 1
                                        WHEN name LIKE ? THEN 3
                                        ELSE 2
                                    END
                                LIMIT 10");
$search_stmt->bind_param('ssssss', $key, $key, $key, $key, $key, $key);
$search_stmt->execute();
$search_stmt->store_result();
$search_stmt_num = $search_stmt->num_rows;
$search_stmt->bind_result($id, $name, $col3, $col4, $table);


注意:在音乐表中输入的空白​​列是查询工作所必需的,联合查询需要在每个表中选择相同数量的列。

在实际问题上。而通过上面的查询搜索多个表格与我想要扩展的一个关键字,以便可以考虑多个关键字。

通过让您实时查看,这是最容易解释的。

  

转到http://jpdesigns.me/studentnights/
  输入薄荷'进入搜索栏,不要按Enter键,让ajax完成它的工作   通知显示2个俱乐部,Mint Club(Leeds),Mint Club(伦敦)   添加'利兹'进入搜索栏(所以'铸造利兹')   注意两个俱乐部都消失了。

我想要的是什么,当薄荷利润'在搜索栏中键入,它显示利兹的薄荷俱乐部,
因为这个名字'俱乐部是'薄荷俱乐部' (因此包含“薄荷”这个词) 以及它在城市中的地位。叫做利兹'

感谢您的阅读,并知道任何帮助都会被大量使用。


编辑:更新了Stament以便参数化。

0 个答案:

没有答案