我正在尝试使用PHP和SQL在我的网站上创建一个搜索功能。我正在尝试这样做,这样当我在其中搜索关键字时,它会显示与该关键字匹配的项目
这是我的Database
如果我搜索“米鸡”,它将返回Davida和roys,我希望它只返回Davids,因为它匹配两个单词,而不是roys,因为roys只匹配大米
这是我当前的代码。
$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.";
}发布于 2017-02-03 14:48:28
您可以这样进行查询
$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_*-函数。在PHP5.5(2013年)之后就被弃用了,在PHP7中也被完全移除了。
发布于 2017-02-03 14:58:39
如果你只想要davids的结果是“米鸡”,你可以把你的字符串拆分成大米和鸡肉,然后查询为
SELECT * from menu WHERE items REGEXP 'rice' AND items REGEXP 'chicken'
你只会得到一个结果
注意:使用REGEXP可能会降低批量数据检索的速度
发布于 2017-02-03 20:59:24
$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.";
}https://stackoverflow.com/questions/42017832
复制相似问题