我正在使用PDO并提供用户可以用其搜索结果选择的选项。一些示例是排序,结果数量,页码等。我尝试使用预准备语句来验证此数据以防止SQL注入攻击,但变量永远不会传递到查询中。为PDO使用MySQL查询选项准备好的语句
我在做什么错?结果的排序和数量是SELECT菜单,页码是文本输入表单,可以输入数字。
$query = "SELECT SQL_CALC_FOUND_ROWS * FROM people ORDER BY id :sortBy LIMIT $start, :total";
$result = $conn->prepare($query);
$result->bindValue(":sortBy", $sortBy, PDO::PARAM_STR);
$result->bindValue(":total", $total, PDO::PARAM_INT);
你如何确定“变量永远不会传递到查询中”? – deceze
你为什么要绑定一些,而不是全部?即'$ start'。 –
当我删除bindValues并在查询中输入ASC和100代替:sortBy和:totalResults时,它可以工作。 – Zoolander