我正在尝试为我的网站创建一个过滤系统。当前的代码如下所示:
$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, '%')
注意:
- 与
LIKE
进行比较时反向上传名称和过滤器
- 使用
COUNT()
仅返回结果集中的行数,而不是返回可能包含多行的结果集(即使它只是 ID),然后在客户端读取计数. - 考虑使用prepared statements而不是插入查询字符串。
这里是SQLFiddle 演示
关于php - MySQL "LIKE"子句用于过滤字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181773/