Php 跨多个列搜索
我正在尝试创建一个搜索功能,该功能将搜索多个列以查找基于关键字的匹配项。例如,当用户输入要搜索的关键字时,我需要跨五个类别列进行搜索,并返回在其任一类别列中包含关键字的所有行的相应行名。代码如下:Php 跨多个列搜索,php,mysql,search,Php,Mysql,Search,我正在尝试创建一个搜索功能,该功能将搜索多个列以查找基于关键字的匹配项。例如,当用户输入要搜索的关键字时,我需要跨五个类别列进行搜索,并返回在其任一类别列中包含关键字的所有行的相应行名。代码如下: <?php mysql_connect($dbhost, $dbuser, $dbpass) or die("could not connect."); mysql_select_db($dbname) or die("could not find database.");
<?php
mysql_connect($dbhost, $dbuser, $dbpass) or die("could not connect.");
mysql_select_db($dbname) or die("could not find database.");
$result = "";
//collect info from database
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
//SQL query
$query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%$searchq%' OR category2 LIKE '%$searchq%' OR category3 LIKE '%$searchq%' OR category4 LIKE '%$searchq%' OR category5 LIKE '%$searchq%'") or die("No records found.");
$count = mysql_num_rows($query);
if($count == 0)
{
$output = "There's no search result";
}
else {
while($array = mysql_fetch_assoc($query))
{
?>
<li><?php echo $array['name'];?></li>
<?php
}
?>
}
}
</ul>
全文搜索可能是最佳选择。你确定你的$searchq=preg_替换(“#[^0-9a-z]#i”,”,$searchq)代码>线路工作正常?嗯,a)您是否尝试在预更换线路之后回显$searchq
?b) 如果发生了错误,用户会怎么说?一般的方法和SQL对我来说似乎没问题(没有尝试过,也不知道你的数据…)。。。看看这个,看看标准化!
<?php
mysql_connect($dbhost, $dbuser, $dbpass) or die("could not connect.");
mysql_select_db($dbname) or die("could not find database.");
$result = "";
//collect info from database
if(isset($_POST['search'])&& $_POST['search'] != "")) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
//SQL query
$query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%".$searchq."%' OR category2 LIKE '%".$searchq."%' OR category3 LIKE '%".$searchq."%' OR category4 LIKE '%".$searchq."%' OR category5 LIKE '%".$searchq."%'");
$count = mysql_num_rows($query);
if($count == 0)
{
$output = "There's no search result";
}
else {
while($row= mysql_fetch_assoc($query))
{
echo $row['name'];
}
}
}
?>