【发布时间】:2019-02-16 23:42:14
【问题描述】:
我想创建一个过滤器,并将类别和值都传递到 WHERE 子句中的 sql 查询中。 如果我手动设置类别,它会获取值并过滤结果。但是当我想通过类别时,它给了我这个错误。
这是我使用的代码:
$('#filterEvents').click(function () {
document.location.href = 'events.php?filter=' + $('#eventFilterOption').val() + '&filterValue=' + $('#eventFilterInput').val();
});
以及PHP处理:
$category = $_GET['filter'];
$searchValue = $_GET['filterValue'];
$sql = "SELECT EV_Date, EV_KKZ, EV_CardNr, TE_Name, EV_Name, EV_SurName, EV_EventTyp FROM events1
INNER JOIN terminal1 ON terminal1.TE_IDX = events1.EV_FK_TermIDX
WHERE ".$category." = '" . $searchValue . "'
ORDER BY EV_Date DESC
LIMIT 2000";
print_r($sql);
$query = $DB->prepare($sql);
$query->execute();
$data = $query->fetchAll(PDO::FETCH_ASSOC);
【问题讨论】:
-
转储查询 - 消息表明您有语法错误。
-
调试你的代码
-
您应该对照允许的列名白名单检查
$category,并且应该为该值绑定一个参数。这是一个很大的 sql 注入漏洞。 -
@jeroen,我得到了
$category的值,我可以打印出来。但是当我尝试在子句中使用时,它无法正常工作。问题是,我可以使用其他值。 -
你正在做一个
print_r($sql);。结果是什么?