使用php和mysql的多关键字搜索表单
我创建了一个基本搜索表单,允许用户通过输入关键字来搜索我的数据库。如果它们的关键字匹配,则显示结果。但是,现在我试图弄清楚当用户输入多个关键字时如何搜索数据库。例如,如果我想按名字搜索,我可以这样做,但如果我想同时按名字和姓氏搜索,我不能。我不确定如何将输入表单的字符串拆分为两个单独的字符串,以便将其视为两个不同的字符串,然后保存到一个变量中,该变量将根据数据库检查这两个字符串使用php和mysql的多关键字搜索表单,php,mysql,database,Php,Mysql,Database,我创建了一个基本搜索表单,允许用户通过输入关键字来搜索我的数据库。如果它们的关键字匹配,则显示结果。但是,现在我试图弄清楚当用户输入多个关键字时如何搜索数据库。例如,如果我想按名字搜索,我可以这样做,但如果我想同时按名字和姓氏搜索,我不能。我不确定如何将输入表单的字符串拆分为两个单独的字符串,以便将其视为两个不同的字符串,然后保存到一个变量中,该变量将根据数据库检查这两个字符串 <?php include("dbconnect.php"); if(!isset($_POST['
<?php
include("dbconnect.php");
if(!isset($_POST['search']))
{
header("Location:index.php");
}
$search_sql="SELECT * FROM speakers
WHERE fname LIKE '%".$_POST['search']."%'
OR lname LIKE '%".$_POST['search']."%'
OR city LIKE '%".$_POST['search']."%'
OR state LIKE '%".$_POST['search']."%'
OR ageGroup LIKE '%".$_POST['search']."%'
OR topic1 LIKE '%".$_POST['search']."%'
OR topic2 LIKE '%".$_POST['search']."%'
OR topic3 LIKE '%".$_POST['search']."%'";
$search_query=mysqli_query($dbc, $search_sql);
if(mysqli_num_rows($search_query) !=0)
{
$search_rs=$search_query->fetch_assoc();
}
?>
<p>Speaker Results</p>
<?php
if(mysqli_num_rows($search_query)!=0)
{
do { ?>
<p>
<?php
echo $search_rs['fname'];
echo $search_rs['lname'];
echo $search_rs['city'];
echo $search_rs['state'];
echo $search_rs['ageGroup'];
echo $search_rs['topic1'];
echo $search_rs['topic2'];
echo $search_rs['topic3'];
?>
</p>
<?php
} while ($search_rs=$search_query->fetch_assoc());
}
else
{
echo "No results found";
}
?>
您可以使用正则表达式,例如:
SET @keywords = "john|doe";
SELECT * FROM speakers
WHERE fname REGEXP @keywords
OR lname REGEXP @keywords
OR city REGEXP @keywords;
我应该注意,这种查询效率不高。我将转而研究一些PHP搜索扩展:查看mysql文档的全文搜索,