2016-07-29 31 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

相關問題