OrderBy查询Php在添加限制后不工作

OrderBy查询Php在添加限制后不工作,php,limit,Php,Limit,我想我的问题只是语法错误或者排序方式应该在LIMIT之前,不管怎样,在我的查询中添加LIMIT之后,下面的语句生成了一个mysql错误 $query_pag_data = "SELECT * FROM Apartment LIMIT $start, $per_page";// without LIMIT the if statement works while with LIMIT it doesn't. if ($_GET['SortBy']=="Price" || $_GET['SortB

我想我的问题只是语法错误或者排序方式应该在LIMIT之前,不管怎样,在我的查询中添加LIMIT之后,下面的语句生成了一个mysql错误

$query_pag_data = "SELECT * FROM Apartment LIMIT $start, $per_page";// without LIMIT the if statement works while with LIMIT it doesn't.

if ($_GET['SortBy']=="Price" || $_GET['SortBy']=="District" ||) {
$query_pag_data .= "ORDER BY ".$_GET['SortBy']; // It doesn't work if I add LIMIT to my query
}
错误是什么?我怎样才能使它与极限和极限一起工作 按顺序不能更改我的逻辑。

这将起作用

if ($_GET['SortBy']=="Price" || $_GET['SortBy']=="District") {
  $query_order_by= " ORDER BY ".$_GET['SortBy']; 
 }
 $query_pag_data = "SELECT * FROM Apartment $query_order_by LIMIT $start, $per_page";

您完成的SQL应该像SELECT、FROM、ORDER BY和LIMIT一样读取。因此,您的PHP应该像这样编写:

$query_pag_data = "SELECT * FROM Apartment";

if ($_GET['SortBy']=="Price" || $_GET['SortBy']=="District") {
    $query_pag_data .= " ORDER BY ".$_GET['SortBy'];
}

$query_pag_data .= " LIMIT $start, $per_page"

谢谢你,伙计。这是有道理的。我现在就试试,然后给你一个feedback@YourCommonSense明白了,先生。这里的实际问题是您应该学习如何调试sql查询。一个简单的谷歌搜索,或者阅读mysql错误就会告诉你ORDER BY应该放在Limit之前,用mysqli\u real\u escape\u字符串清理$GET['SortBy']有什么意义?此函数执行什么样的清理?@YourCommonSense$\u GET['SortBy']可以安全使用,因为它只能是要包含在SQL查询中的价格或地区。Ie在特定变量上运行mysqli\u real\u escape\u字符串没有意义。mysqli_real_escape_string转义用于mysql查询中的字符,以防止SQL注入。我的意思是转义引号和字符串中的其他字符,而不是像LIMIT'a这样的逻辑错误。当然,您已经知道:。即使$u GET['SortBy']没有被过滤掉,使用mysqli\u real\u escape\u字符串也会像trim一样无用。这个函数与SQL注入毫无关系。@YourCommonSense第一句话:同意。这不是我在评论中说的吗。。。?第二句话:当然,如果它在包含WHERE username=$username的查询中转义了诸如阻止准确输入abc或username=admin之类的字符,那么开发人员不希望将行返回给user admin,那么它可以阻止sql注入?sql注入并不意味着包含引号的内容。