我正在尝试使用PHP和SQL在我的网站上创建搜索功能。 我试图让它成为当我在其中搜索关键字时显示与关键词匹配的项目
这是我的Database
如果我要搜索大米鸡"它将返回Davida和roys,我希望它只返回Davids,因为它匹配两个单词而不是roys,因为roys只匹配rice
这是我目前的代码。
$search = $_GET['query'];
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("axamenu");
$query = mysql_query("SELECT * FROM menu WHERE CONTAINS(items,'$.search')");
if(mysql_num_rows($query) >= 1) {
while($a = mysql_fetch_array($query)) {
echo "<a href='".$a['profileurl']."'>".$a['restaurant']."</a><p>".$a['menutype']."</p><hr/>";
}
} else {
echo "Oh no! Nothing was found.";
}
答案 0 :(得分:0)
您可以通过这种方式进行查询
$where = '';
$string = "thi sdas asd";
$search = explode(" ",$string);
if(sizeof($search)>1)
{
$where = "1=1";
foreach($search=>$key as $val){
$where .= "or items like %".$val."%";
}
}
else
{
$where = "items like %".$search[0]."%"
}
$query = mysql_query("SELECT * FROM menu WHERE ".$where);
//rest of your code goes here
注意:停止使用已弃用且不安全的mysql _ * - 函数。它们自PHP 5.5(2013年)以来已被弃用,并在PHP 7中被完全删除。使用MySQLi或PDO
答案 1 :(得分:0)
如果你只想把大卫的结果当作“米饭鸡”, 你可以将你的字符串拆分为米饭和鸡肉,并查询为
SELECT * from menu WHERE items REGEXP 'rice' AND items REGEXP 'chicken'
你只能得到一个结果
注意:使用REGEXP会降低批量数据检索的结果
答案 2 :(得分:0)
$search = $_GET['query'];
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("axamenu");
$query = mysql_query("SELECT * FROM menu WHERE
items LIKE '%".$search."%'");
if(mysql_num_rows($query) >= 1)
{
while($a = mysql_fetch_array($query))
{
echo "<a href='".$a['profileurl']."'>".$a['restaurant']."</a><p>".$a['menutype']."</p><hr/>";
}
}
else
{
echo "Oh no! Nothing was found.";
}
答案 3 :(得分:-2)
尝试使用此功能,如果有效,请告诉我们。
select * from table_name where items like 'rice%' or items like 'chicken%';