0

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

$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 是字符串标题

例如,上传可以是:Me.And.My.Dog.At.The.Lake

并且过滤器数据库中有一条记录说:me.and.my.dog

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

4

2 回答 2

1

使用以下语句获取行数

         if($DB->fetch(PDO::FETCH_NUM) != 0) {
          $Err = '[b]Cannot upload this![/b]';
              include(SERVER_ROOT . '/sections/upload/upload.php');
             die();
              }
于 2013-08-12T08:05:34.290 回答
1

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

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

笔记:

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

这是SQLFiddle演示

于 2013-08-12T08:00:36.237 回答