我正在为我的网站(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以便参数化。