使用PHP和MySQLi进行数据库搜索的多个单词字符串

时间:2018-03-04 04:52:30

标签: php database mysqli

在尝试设置联系人数据库时,我尝试使用多字词串搜索人员数据库以缩小搜索结果范围。 我有以下代码。我的问题是将表单输入字符串的结果转换为数组并将其插入到$ sql SELECT编码中,以便它针对每一列检查每个单词。这样做的原因是,在进行搜索时,您可以输入' Joe Bloggs New York'或者'纽约乔博格斯'得到相同的结果。

<?php   

// **My String collection and conversion to an array** 

// Get Form String

$input = $_POST['input'];

// Split String into an Array

$input = preg_split("/[\\/\s,]+/", $input);

// Checking That We Now Have An Array

    print_r($input);

// Loop Through Array Values

for ($i = 0; $i < count($input); $i++) {

// Checking Array Output

    echo '<br />';
    echo $input[$i];
    echo '<br />';
}

// **My database query**

// Connect To Database

require_once("connect.php"); 

// Query The Database

$sql="SELECT * FROM contact WHERE name LIKE '%$input[$i]%' AND lastName LIKE '%$input[$i]%' AND area LIKE '%$input[$i]%' ORDER BY name";

if ($result=mysqli_query($con,$sql))
  {

  // Fetch one and one row

  while ($row=mysqli_fetch_row($result))
    {
    echo "<h2><u>$row[1]</u></h2><br />"; 
    echo "<img src='img/$row[5]' style='width:300px; height: auto;'/>"; 
    echo "<h3>Name - $row[1] $row[2]</h3>"; 
    echo "<h3>Phone - $row[3]</h3>"; 
    echo "<h3>Email - $row[4]</h3>"; 
    echo "<br /><br />";
    }

  // Free result set

mysqli_free_result($result);

} else {
    echo "No Results";
}

// Close Database Connection

mysqli_close($con);
?>

    <h1>Contacts</h1>
    <form method="post" action="search.php">
         <table>
            <tr>
               <td>
                 <input type="text" name="input" size="30" maxlength="50"/>
               </td>
               <td>
                  <input type="submit" name="SEARCH" value="Search"/>
               </td>
            </tr>
         </table>
</form>

如果我可以请求帮助将两段代码放在一起以便它接受字符串,将其转换为数组,然后只返回来自纽约的Joe Bloggs数据库中的返回I& #39;非常感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试在查询中将AND更改为OR,否则您正在查询生活在john中的john john ...