代码之家  ›  专栏  ›  技术社区  ›  meleyal

如何在CodeIgniter中从具有相同列名的表中输出数据?

  •  2
  • meleyal  · 技术社区  · 16 年前

    这是我的疑问:

    $query = $this->db->query('
        SELECT archives.id, archives.signature, type_of_source.description, media_type.description, origin.description 
        FROM archives, type_of_source, media_type, origin                                                             
        WHERE archives.type_of_source_id = type_of_source.id                                                          
        AND type_of_source.media_type_id = media_type.id                                                              
        AND archives.origin_id = origin.id                                                                            
        ORDER BY archives.id ASC
    ');
    

    但是如何输出结果呢?这有效,但只得到最后一个描述(origin.description):

    foreach ($query->result_array() as $row)
    {
        echo $row['description'];
    }
    

    这行不通:

    foreach ($query->result_array() as $row)
    {
        echo $row['type_of_source.description'];
    }
    

    或者我应该重命名列(例如type_of_source_description)吗?

    3 回复  |  直到 16 年前
        1
  •  5
  •   pilsetnieks    16 年前

    这实际上与CodeIgniter关系不大,而与mysql_fetch_assoc提供查询结果的方式关系很大。

    解决方案是,您应该使用以下命令重命名查询中的列 "AS" 例如。

    select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....
    
        2
  •  2
  •   Pittsburgh DBA    16 年前

    只需将SELECT语句中的列别名化即可。不要修改数据库。标准做法是在SQL语句中使用别名。

    来自PostgreSQL的文档 "SELECT" :

    使用子句AS output_name,可以为输出列指定另一个名称

    PostgreSQL SELECT

        3
  •  1
  •   Thejuli Thejuli    16 年前

    我建议不要这样使用它,您可以用以下命令重命名输出列 AS .