ORDER BY日期同时在MySQL查询中使用LIMIT - PHP

时间:2009-07-01 04:53:25

标签: php mysql pagination sql-order-by

HI,

我无法弄明白这一点,我正试图从MySQL中提取记录,按逆时间顺序排序并将结果限制为每页四个(并使用分页来组织页面)。它目前正在返回此错误:

致命错误:第126行/Users/allan/Sites/4is_site/casestudylist.php中的SQL

$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,我遇到了问题。

2 个答案:

答案 0 :(得分:8)

该语法不正确。这应该有用。

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

供将来参考 - SELECT Syntax

答案 1 :(得分:0)

BTW要逃避$ _GET ['niche']:

$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";

这将有助于通过转义$ _GET ['niche']中的字符来保护您免受SQL注入攻击。

为了提高安全性,请考虑使用绑定参数(google'em)和/或库函数(如Zend DB)来访问数据库。