我有一个搜索结果页面,其中包含一个简单的表单来过滤结果的顺序,我希望表单可以过滤:
ORDER BY - ASC或DESC - 以及MySQL查询中的PER PAGE LIMIT
以下是我尝试使用
过滤订单的代码$order_by = mysqli_real_escape_string($database,$_GET['order_method']);
$query = mysqli_query($database,"SELECT * FROM `products`
order by `<?php if(empty($order_by)){echo "id";}else{echo "$order_by"; ?>` ASC");
它不起作用...我在&gt; php第22行中出错了,这一行是上面的代码行
这个想法是,如果用户进入默认页面,我显然没有$ order_by,所以在这种情况下,order by将是默认页面
echo "id"
但如果客户使用html表单过滤结果,我会得到&#34; order_by&#34;通过更改客户在这种情况下使用html表单发送的值
来查询mysql查询顺序echo "$order_by"
我正在尝试很多方法来做到这一点,但似乎没有人工作,任何想法都会有很多帮助
答案 0 :(得分:1)
您的代码:
$order_by = mysqli_real_escape_string($database,$_GET['order_method']);
$query = mysqli_query($database,"SELECT * FROM `products`
order by `<?php if(empty($order_by)){echo "id";}else{echo "$order_by"; ?>` ASC");
问题:
<?php if(empty($order_by)){echo "id";}else{echo "$order_by"; ?>
您已经在PHP代码块中。您需要使用串联构建查询字符串:
尝试:
$order_by = mysqli_real_escape_string($database,$_GET['order_method']);
$sql = "SELECT * FROM `products` order by `";
if(empty($order_by)){
$sql .= "id";
} else {
$sql .= $order_by;
}
$sql .="` ASC";
// Now you can execute the query
$query = mysqli_query($database,$query);