PHP / MySQL - 排序数组结果的语法?

时间:2017-02-20 16:32:59

标签: php mysql sorting

为基于PHP的电子商务系统使用自定义模板(Journal 2)。 在控制面板中,有一个加载自定义模块的部分。 问题是,模块按创建顺序呈现,这使得很难找到正确的模块。 我想按照按字母顺序对它们进行排序。

如何&我在哪里可以为此功能添加按名称排序功能?

public function all() {
    if (isset($this->get_data['module_type'])) {
        $module_type = $this->db->escape('journal2_' . $this->get_data['module_type']);
        $query = $this->db->query('SELECT * FROM ' . DB_PREFIX . 'journal2_modules WHERE module_type = "' . $module_type . '"');
    } else {
        $query = $this->db->query('SELECT * FROM ' . DB_PREFIX . 'journal2_modules');
    }

    foreach ($query->rows as &$row) {
        $row['module_data'] = json_decode($row['module_data'], true);
        if (is_array($row['module_data'])) {
            foreach($row['module_data'] as $key => &$value) {
                if (!in_array($key, array('module_name', 'module_type'))) {
                    unset($row['module_data'][$key]);
                }
            }
        }
    }

    return $query->rows;
}

提前致谢!

3 个答案:

答案 0 :(得分:0)

在查询中插入“ORDER BY fieldName”结尾以进行排序。

答案 1 :(得分:0)

尝试更改您的查询:

if (isset($this->get_data['module_type'])) {
    $module_type = $this->db->escape('journal2_' . $this->get_data['module_type']);
    $query = $this->db->query('SELECT * FROM ' . DB_PREFIX . 'journal2_modules WHERE module_type = "' . $module_type . '" ORDER BY module_data ASC');
} else {
    $query = $this->db->query('SELECT * FROM ' . DB_PREFIX . 'journal2_modules ORDER BY module_data ASC');
}

答案 2 :(得分:0)

如果您需要特定订单,可以在sql中使用order by子句。在您的情况下,module_name

可能是有用的顺序
  $query = $this->db->query('SELECT * FROM ' . DB_PREFIX . 
             'journal2_modules WHERE module_type = "' . 
                    $module_type . '"  order by module_name ');