使用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文档的全文搜索,