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

当SQL查询具有别名时获取列值

  •  0
  • kenanng  · 技术社区  · 12 年前

    我有一个SQL查询,其中有别名。问题是,当我试图获取列的值时,它没有显示正确的值:

    $sql = "SELECT p.ID, p.ProfileID, p.ModuleID, p.View, p.Add, p.Edit, p.Delete, m.Name, m.ID FROM permission AS p, module AS m WHERE p.ModuleID = m.ID ORDER BY p.ProfileID ASC, m.Name ASC";
    
        $result = array();
        $i = 0;
        foreach ($this->dbconnect->query($sql) as $row)
        {
            $result[$i] = array(
            'ID' => $row['p.ID'],
            'ProfileID' => $row['p.ProfileID'],
            'ModuleID' => $row['p.ModuleID'],
            'View' => $row['p.View'],
            'Add' => $row['p.Add'],
            'Edit' => $row['p.Edit'],
            'Delete' => $row['p.Delete']);
    
            $i += 1;
        }
    

    当数据库中的实际值为10时,运行不会显示任何值。

    如果我将上述代码更改为以下代码:

    $sql = "SELECT p.ID, p.ProfileID, p.ModuleID, p.View, p.Add, p.Edit, p.Delete, m.Name, m.ID FROM permission AS p, module AS m WHERE p.ModuleID = m.ID ORDER BY p.ProfileID ASC, m.Name ASC";
    
        $result = array();
        $i = 0;
        foreach ($this->dbconnect->query($sql) as $row)
        {
            $result[$i] = array(
            'ID' => $row['ID'],
            'ProfileID' => $row['ProfileID'],
            'ModuleID' => $row['ModuleID'],
            'View' => $row['View'],
            'Add' => $row['Add'],
            'Edit' => $row['Edit'],
            'Delete' => $row['Delete']);
    
            $i += 1;
        }
    

    神奇的是,跑步显示了 m.ID 而不是 p.ID 奇怪的是为什么第一个例子不正确。我是不是错过了什么?

    2 回复  |  直到 12 年前
        1
  •  2
  •   Ashwini Agarwal    12 年前

    你应该这样。。。

    SELECT p.ID as p_ID, ...
    

    'ID' => $row['p_ID'],
    
        2
  •  0
  •   Lkopo    12 年前

    在SELECT中对每一列使用别名,这些别名相同:

    $sql = "SELECT p.ID AS permission_id, p.ProfileID, p.ModuleID, p.View, p.Add, p.Edit, p.Delete, m.Name, m.ID AS module_id FROM permission AS p, module AS m WHERE p.ModuleID = m.ID ORDER BY p.ProfileID ASC, m.Name ASC";
    

    那么:

    foreach(...)
    {
        $result[$i] = array(
        'Perm_ID' => $row['permission_id'],
        'Module_ID' => $row['module_id'],
        ...
    } 
    
    推荐文章