从数据库在 PHP 中按字母顺序排序


Sorting Alphabetically in PHP from Database

我正在尝试按字母顺序对列表进行排序,此列表取自MySQL数据库,但我只能按升序或降序排列信息。这是我当前使用的代码:

if(isset($_GET['cat_id']))
{
    $cat_id=$_GET['cat_id'];    
    $query="SELECT sub_cat_id,sub_cat_name FROM tbl_sub_category WHERE cat_id='". $cat_id."' ORDER BY tbl_sub_category.sub_cat_id DESC LIMIT $number_of_posts";         
}
else if(isset($_GET['sub_cat_id']))
{            
    $sub_cat_id=$_GET['sub_cat_id'];    
    $query="SELECT * FROM tbl_directory WHERE d_subcat_id='". $sub_cat_id."' ORDER BY tbl_directory.d_id DESC LIMIT $number_of_posts";
}
else if(isset($_GET['sub_sub_cat_id']))
{            
    $sub_sub_cat_id=$_GET['sub_sub_cat_id'];        
}
else if(isset($_GET['directory_id']))
{            
    $directory_id=$_GET['directory_id'];        
    $query="SELECT * FROM tbl_directory WHERE d_id='". $directory_id."'";       
}
else
{   
    $query="SELECT cid,category_name,category_image FROM tbl_category ORDER BY tbl_category.cid DESC LIMIT $number_of_posts";
}

您需要按名称排序,而不是按 id 排序。

注意:将适当的字段名称放在必要的位置。

更正的代码:

<?php
if(isset($_GET['cat_id'])) {
  $cat_id=$_GET['cat_id'];      
  $query="SELECT sub_cat_id,sub_cat_name FROM tbl_sub_category WHERE cat_id='". $cat_id."' ORDER BY tbl_sub_category.sub_cat_name DESC LIMIT $number_of_posts";
}
else if(isset($_GET['sub_cat_id'])) {
  $sub_cat_id=$_GET['sub_cat_id'];        
  $query="SELECT * FROM tbl_directory WHERE d_subcat_id='". $sub_cat_id."' ORDER BY tbl_directory.d_NAME_FIELD DESC LIMIT $number_of_posts";
}
else if(isset($_GET['sub_sub_cat_id'])) {
  $sub_sub_cat_id=$_GET['sub_sub_cat_id'];        
}
else if(isset($_GET['directory_id'])) {
  $directory_id=$_GET['directory_id'];      
  $query="SELECT * FROM tbl_directory WHERE d_id='". $directory_id."'";
}
else {   
  $query="SELECT cid,category_name,category_image FROM tbl_category ORDER BY tbl_category.category)name DESC LIMIT $number_of_posts";
}

由于 usermesam0023 只是将这一行更改为ORDER BY tbl_directory.directory_name而不是directory_id,它才能工作。