如何使用 php 从 SQL 数据库中选择包含特定文本的所有行 [重复]

Posted

技术标签:

【中文标题】如何使用 php 从 SQL 数据库中选择包含特定文本的所有行 [重复]【英文标题】:How do I SELECT from SQL database all rows that contain certain text using php [duplicate] 【发布时间】: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);
?>

【问题讨论】:

【参考方案1】:

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

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

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

? 是一个参数占位符。

【讨论】:

以上是关于如何使用 php 从 SQL 数据库中选择包含特定文本的所有行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL 表中选择特定行并连接 SQL 服务器中的多个表?

如何从SQL表中选择特定行并在SQL Server中连接多个表?

从 SQL 数据库中选择特定的行和列

是否可以使用模式匹配从 Oracle SQL 数据库中选择列?

如何从MySQL中的特定列获取特定数据?

从日期中选择特定记录的 SQL 查询