2009-07-01 73 views
1

HI,ORDER BY日期,而在一個MySQL查詢還使用LIMIT - PHP

我不能完全想出解決辦法,我想拉記錄從MySQL,責令其反向按時間順序和限制結果到每頁四個(並使用分頁來組織頁面)。這是目前返回此錯誤:

致命錯誤:SQL在/Users/allan/Sites/4is_site/casestudylist.php線126

$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = "SELECT * FROM studies ORDER BY date desc WHERE niche = '{$_GET['niche']}' $limit"; 

分頁一直很好,只是現在我我試圖添加ORDER BY,我遇到了問題。

+0

此外,我聽說我需要逃避這一點:'{$ _GET ['niche']}',我該怎麼做? – user96828 2009-07-01 04:57:03

回答

8

該語法不正確。這應該工作。

$escapedNiche = mysql_real_escape_string($_GET['niche']); 
$query = "SELECT * FROM studies WHERE niche = '$escapedNiche' ". 
     "ORDER BY date DESC $limit"; 

以供將來參考 - SELECT Syntax

0

BTW爲了逃避$ _GET [ '小衆']:

$clean_niche = mysql_escape_string($_GET['niche']); 
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = "SELECT * FROM studies " 
     ."WHERE niche = '{$clean_niche}' " 
     ."ORDER BY date desc $limit"; 

這將有助於保護您免受SQL注入攻擊的轉義$字符_GET [ '利基']。

爲了提高安全性,請考慮使用綁定參數(google'em)和/或庫函數(如Zend DB)來訪問數據庫。

+0

mysql_escape_string只有在輸入被引號包圍時纔會清理輸入。要清理限制,可以使用is_numeric()驗證「niche」參數是一個整數。 – diedthreetimes 2011-04-11 02:22:40