在网站php sql上搜索功能

时间:2013-04-06 15:47:42

标签: php mysql search phpmyadmin

我的网站上有一个简单的搜索框,现在只根据符合的某些标准生成结果。

if(isset($_GET['action'])&&isset($_GET['searchbox'])) {
    if($_GET['searchbox']!='') {
        $result = mysql_query("SELECT * FROM `restaurants` WHERE `restaurant` LIKE '%{$_GET['searchbox']}%'");  // RESULT IS FIND EVERYTHING THAT MATCHES SEARCH FROM TABLE //
    } else {
        $result = mysql_query("SELECT * FROM `restaurants`");
    }
}

<form action="search.php" id="searchform" method="get" class="searchbox-container">
    <input type="text" id="searchbox" name="searchbox" class="searchbox" />
    <input type="submit" class="searchbox-btn" value="Search" />
    <input type="hidden" name="action" value="search" />

我想要的是搜索框从所有表格数据中返回数据库中的结果,而不仅仅是餐馆名称等特定数据。

我也希望它能够工作,这样如果有人搜索“sto”,那么“stoke”等结果就会出现,所以搜索不一定是数据库中的搜索结果。

如果代码错误或过时,请原谅代码,这是从一个有点旧的大学教程中获取的。

1 个答案:

答案 0 :(得分:3)

没有办法只使用MySql搜索数据库中的所有内容,您仍然需要选择要在哪些表中搜索哪些列。您可以使用不同的查询搜索不同的数据,然后在PHP中加入结果或进行某种JOIN。如果你不小心,虽然你最终会得到一些效率低下的东西。

还有一个注意事项 - 这应该已经匹配了部分单词 - LIKE子句中搜索词周围的%表示“此位置中的任何字符”

要搜索餐馆中的更多字段,您可以从以下内容开始(例如,如果您有口号):

$result = mysql_query("SELECT * FROM `restaurants` WHERE `restaurant` LIKE '%{$_GET['searchbox']}%' OR `slogan` LIKE '%{$_GET['searchbox']}%'");

你不应该直接将用户输入注入SQL,它会让你受到攻击!

要使用JOIN搜索其他表中的更多字段,您可以从以下开始(例如,如果您有食物表):

$result = mysql_query("SELECT `restaurants`.* FROM `restaurants` LEFT JOIN `food` ON `food`.`restaurant_id` = `restaurant`.`id` WHERE `restaurant` LIKE '%{$_GET['searchbox']}%' OR `food` LIKE '%{$_GET['searchbox']}%'");

如果您需要有关我刚刚给您的帮助,您可以查看这两页:

http://dev.mysql.com/doc/refman/5.0/en/select.html

http://dev.mysql.com/doc/refman/5.0/en/join.html