目前我有一个简单的搜索查询,其工作方式如下:
$username = $_SESSION['username'];
$chosencategory = $_GET['category'];
$price = $_GET['price'];
$search = $_GET['search'];
$terms = explode(" ", $search);
if ($price && $chosencategory){
$sql = "SELECT * FROM people WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE) AND category='$chosencategory' ORDER BY price $price";
$q = $conn->prepare($sql) or die("failed!");
$q->bindValue(':search',"%".$search."%",PDO::PARAM_STR);
$q->execute();
}
例如,当用户选择“显示价格从最低到最高”时,发送到$_GET['price']
= ASC 的值,但是我不确定这是否是对结果进行排序的安全方法,有没有人有更好的方法?
这种方法也不是最好的,因为当用户选择“显示价格从最低到最高”之类的排序选项时,下拉框会回显已发送到 $_GET['price'] 的值,即“ASC”所以在表单发送后的下拉框显示为 ASC!
抱歉,如果这令人困惑,请发表评论,如果您希望我重新解释这一点,非常感谢任何帮助或建议!