2016-07-29 64 views
0

该页面显示所有结果,现在我想筛选结果以及每页有多少结果。为此,访问者使用简单的html GET表单来选择过滤器。构建一个mysqli查询,并按页面顺序显示

现在我得到的GET形式和试图筛选结果

<?php 
$order_by = mysqli_real_escape_string($database,$_GET['order_by']); 
$order = if(empty($order_by)){echo 'manufacturer';}else{echo '$order_by'; 
?> 

OK,现在我们得到的过滤器,并尝试从MySQL得到的结果是这样

$set_order=mysqli_query($database,"SELECT * FROM `products` order by `$order` ASC");} 

但我得到错误该行:

$order = if(empty($order_by)){echo 'manufacturer';}else{echo '$order_by'; 

找不到办法做到这一点...任何想法?

+2

'echo'不会返回一个值,那么为什么要为它指定一个变量呢? – RamRaider

回答

0

首先,通过设置默认值。

$order = 'manufacturer'; 

接下来,如果用户提供了其他内容,请用默认值替换。

if (!empty($_GET['order_by'])) { 
    $order = mysqli_real_escape_string($database, $_GET['order_by']); 
} 

然后,您可以使用任何它最终在您的查询。

$set_order = mysqli_query($database, "SELECT * FROM `products` order by `$order` ASC"); 

这肯定是好的,你正在使用mysqli_real_escape_string这里,但我会建议检查,对接受的列名的列表,用户输入,以减轻SQL注入风险。

+0

这是正确的,thansk很多 – Liberator

0

试试这个:

if(empty($order_by)){$order = 'manufacturer';}else{$order = $order_by;} 
+0

我得到相同的错误 – Liberator

+0

你可以显示你收到的错误? – dimabe

1

周围使用一个变量单引号将无法正常工作 - 但为什么不分配变量,然后回声回来?

$order = empty($order_by) ? 'manufacturer' : $order_by; 
echo $order; 

如果这是要在sql查询中使用,则不需要回显它。

经过短暂的8小时休息后,你有一个答案,但我也会在这里发表。

$order = empty($order_by) ? 'manufacturer' : $order_by; 
$sql="select * from `products` order by `{$order}` asc;"; 

$set_order=mysqli_query($database, $sql); 
if($set_order){ 
    /* process recordset */ 
} 
+0

我会试试这个 – Liberator

+0

如何做到这一点没有回声它,并使查询直接? – Liberator

+0

请帮我Raider – Liberator

相关问题