0

有人告诉我尝试发一个新帖子并更好地解释。

我的网页上有上传功能。我想阻止来自名为过滤器的数据库中的某些标题。但它不起作用。

php端看起来像这样。

$DB->query("SELECT COUNT(*) FROM filter WHERE '". $Properties['Title'] ."' LIKE CONCAT('%', filter, '%')");
if($DB->record_count() != 0) {
    $Err = '<b>you cant upload this!</b>';
    include(SERVER_ROOT . '/sections/upload/upload.php');
    die();

$Properties['Title']在我的测试中包含这个:The.White.Tiger.Test.Dawe.avi

白虎。在数据库过滤器中被阻止。如果在 SQL 中运行此查询

SELECT COUNT(*) FROM filter WHERE '". The.White.Tiger.Test.Dawe.avi ."' LIKE CONCAT('%', filter, '%')

我得到计数​​ 1

所以 php 端应该拒绝上传,因为它上面有 1 个条目。但它不存在?代码有问题吗?

我现在已经在 php 中尝试了这些,女巫给出了 500 内部服务器错误

SELECT id FROM filter WHERE 'filter' LIKE CONCAT('%', '" . $Properties['Title'] . "', '%')

if($DB->record_count() != 0) {
    $Err = '<b>You cant upload!</b>';
    include(SERVER_ROOT . '/sections/upload/upload.php');
    die();
}
}


SELECT COUNT(*) as 'count' FROM filter WHERE 'filter' LIKE CONCAT('%', '" . $Properties['Title'] . "', '%')

if($DB->record_count() != 0) {
    $Err = '<b>You cant upload!</b>';
    include(SERVER_ROOT . '/sections/upload/upload.php');
    die();
}
}

SELECT COUNT(*) as count FROM filter WHERE 'filter' LIKE CONCAT('%', '" . $Properties['Title'] . "', '%')

if($DB->record_count() != 0) {
    $Err = '<b>You cant upload!</b>';
    include(SERVER_ROOT . '/sections/upload/upload.php');
    die();
}
}

以上所有都给出了 500 内部服务器错误

4

1 回答 1

0

正如我从查询中看到的那样,您想查找已输入标题的现有记录,例如用户(或其他人)。这里有两个错误:

  1. 错误WHERE的条款。之后WHERE是表字段的名称,而不是值
  2. filter在CONCAT是什么?它有什么价值?

假设表中的标题列名称filtercolumn_title. 并且您正在表格中寻找已经存在的标题The.White.Tiger.Test.Dawe.avifilter。查询应该是这样的:

SELECT COUNT(*) as count FROM filter WHERE 'column_title' LIKE CONCAT('%', 'The.White.Tiger.Test.Dawe.avi', '%')

查询后,您必须检查值count并将其与 1 进行比较。如果它等于或大于 1 - 您已经拥有此标题。其他 - 标题不在表格中,您可以执行添加或其他操作。

更新

正如我看到你真正的表结构 - 你应该替换column_titlefilter

SELECT COUNT(*) as count FROM filter WHERE 'filter' LIKE CONCAT('%', 'The.White.Tiger.Test.Dawe.avi', '%')

于 2013-08-18T15:23:18.230 回答