MySQL查询忽略WHERE子句并返回所有结果

时间:2019-10-15 03:24:02

标签: mysql operator-precedence

我有以下查询:

$db = static::getDB();
$sql = 'SELECT * FROM media WHERE type = :type AND active = 1 
        AND title LIKE :term OR artist LIKE :term2 OR label LIKE :term3
        ORDER BY date_added DESC';
$stmt = $db->prepare($sql);
$stmt->bindValue(':term', '%' . $term . '%', PDO::PARAM_STR);
$stmt->bindValue(':term2', '%' . $term . '%', PDO::PARAM_STR);
$stmt->bindValue(':term3', '%' . $term . '%', PDO::PARAM_STR);
$stmt->bindValue(':type', 'release', PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

但是问题是WHERE type = :type子句被完全忽略,并且该请求返回具有所有可用类型的所有匹配记录。

我什至尝试将此变量的bind语句更改为随机的东西,这些东西当然不是可用的“类型”,但它仍会返回所有结果。看来这种特殊情况已被完全忽略。

最近2个小时,我一直在检查和重新检查我的代码,但是我在任何地方都看不到任何错误,这是在使用太多LIKE条件时的错误吗?

0 个答案:

没有答案