2015-05-07 60 views
1

我使用多个查询,它工作正常,我面临的唯一问题是,顺序是不工作。我尝试了一些代码,如ORDER BY不能与MySQL多个查询

$query = "SELECT id, name, reg_number, class, section FROM register where id IS NOT NULL ORDER BY `id` DESC"; 

它在phpmyadmin中工作正常,并给我一个正确的结果。但它不能在我想使用它的地方工作。

$query = "SELECT id, name, reg_number, class, section FROM register where id IS NOT NULL "; 

    if ($name !=""){ 
     $query .= " AND `name` LIKE '".$name."%'"; // id is greater then 
    } 

    if ($status !=""){ 
     $query .= " AND `status` LIKE '".$status."%'"; // id is greater then 
    } 

    if ($id_from !=""){ 
     $query .= " AND id >= $id_from "; // id is greater then 
    } 

    if ($id_to !=""){ 

     $query .= " AND id <= $id_to "; // id is shorter then 
    } 

     if ($class !=""){ 
     $query .= " AND class IN($class)"; // Selecting class 
    } 

    if ($section !=""){ 
     $query .= " AND section IN($section)"; // selecting section 
    } 

$result = mysql_query($query); 

我想在此查询中使用order by,但order by不能使用this。

$query = "SELECT id, name, reg_number, class, section FROM register where id IS NOT NULL ORDER BY `id` DESC"; 

,并使用

$query = "SELECT id, name, reg_number, class, section FROM register where id IS NOT NULL ORDER BY id DESC"; 

我不知道什么是我的代码的问题。

+0

'的var_dump($查询)''的$ result'行之前和你得到了什么?从代码看,如果你只是换出第一行,它看起来最终会成为无效的SQL。 –

+1

您是否在ORDER BY之后附加了其他WHERE条件? ORDER BY必须在最后... – jarlh

+0

请[停止使用'mysql_ *'函数](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in -php)。他们不再被维护,并[正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。了解[准备的陈述](http://en.wikipedia.org/wiki/Prepared_statement),并考虑使用PDO,[它不像你想象的那么难](http://jayblanchard.net/demystifying_php_pdo.html) 。 –

回答

3

只需添加ORDER BY当完成您的WHERE

 if ($section !=""){ 
     $query .= " AND section IN($section)"; // selecting section 
    } 

$query .= " ORDER BY id DESC"; 
$result = mysql_query($query); 
+0

感谢亚历克斯它工作正常,我与过去6小时的代码战斗,我试过同样的美元查询。=“ORDER BY ID DESC”;但我之前尝试过,如果条件,这就是为什么它不显示任何结果.. 谢谢很多人.... – jitu