【问题标题】:How do I SELECT from SQL database all rows that contain certain text using php [duplicate]如何使用 php 从 SQL 数据库中选择包含特定文本的所有行 [重复]
【发布时间】:2020-04-18 11:53:36
【问题描述】:

我的代码正在运行,但并不是我想要的那样。现在,如果我搜索“Tom Trio”,它会显示包含名称“Tom Trio”的行的所有结果,但如果我搜索“Tom Johnson”,它会显示没有找到任何结果。我希望即使当我搜索“Tom Johnson”时,它仍然会显示“Tom Trio Johnson”个人资料作为从数据库中找到的结果的一部分。我该怎么办?

我有一个数据库表如下:

|  Full Name             |  Age  |  Gender |
|------------------------|-------|---------|
|  Tom Trio Johnson      |  23   |  Male   |
|  Silvia Johnson Calvin |  27   |  Female |
|  James Doe             |  16   |  Male   |

index.php 代码如下:

<form action="results.php" method="post">
 <input type="text" placeholder="Search..." name="search_results"/>
 <button type="submit">Submit</button>
</form>

results.php 代码:

<?php 

   $searchResults = mysqli_real_escape_string($conn, $_POST['search_results']);

   $result = mysqli_query($conn,"SELECT * FROM guests WHERE fullName LIKE '%$searchResults%'");
   while($row = mysqli_fetch_assoc($result)){
      echo $searchResults . $row['Age'] . $row['Gender']; 
   }
   mysqli_close($conn);
?>

【问题讨论】:

    标签: php sql mysqli


    【解决方案1】:

    首先,不要使用文字值来处理查询。 学习使用参数。

    其次,您可能真的想要全文搜索。但是,您可以使用带有like 的通配符来处理您的特定问题:

    fullName LIKE replace(?, ' ', '%')
    

    ? 是一个参数占位符。

    【讨论】:

      猜你喜欢
      • 2013-06-27
      • 2011-10-03
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多