php - MySQL "LIKE"子句用于过滤字符串

标签 php mysql

我正在尝试为我的网站创建一个过滤系统。当前的代码如下所示:

$DB->query("SELECT id FROM filter WHERE filter LIKE '%". $Properties['Title'] ."%'");

if($DB->record_count() != 0) {
    $Err = '[b]Cannot upload this![/b]';
    include(SERVER_ROOT . '/sections/upload/upload.php');
    die();
}

*注意:$DB->record_count = 覆盖 mysqli_num_rows 的函数

因此,我们将 $Properties 设为上传元素的属性,从而将 Title 设为字符串标题

例如,上传可以是: 我和我的狗在湖边

过滤器数据库中有一条记录: 我和我的狗

该代码的目的是出错并且不允许上传继续。

最佳答案

如果我理解正确,你可以使用这样的查询来完成

SELECT COUNT(*) matches
  FROM filter
 WHERE 'Me.And.My.Dog.At.The.Lake' LIKE CONCAT('%', filter, '%')

注意:

  1. LIKE进行比较时反向上传名称和过滤器
  2. 使用 COUNT() 仅返回结果集中的行数,而不是返回可能包含多行的结果集(即使它只是 ID),然后在客户端读取计数.
  3. 考虑使用prepared statements而不是插入查询字符串。

这里是SQLFiddle 演示

关于php - MySQL "LIKE"子句用于过滤字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181773/

相关文章:

php - 在 Laravel 5 中将 `dateTime` 列拆分为单独的 `date` 和 `time` 列

来自不同表的 MySQL 更新状态

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - sql数据字符集/字符集,设置名称不起作用

php - 如何在引号中获取 WordPress 帖子作者电子邮件

php - 如何在 PHP 中向 file_get_content 添加多个 header

php自定义数据库接口(interface)类-未选择数据库

PHP/SQL Where, And, Order By——适用于一个语句,但在另一个类似查询中出错

mysql - 用条件分隔列

java - MySQL选择从今年到去年特定月份的所有行