SQL查询具有别名时获取列值 [英] Getting column value when SQL query has aliases

查看:232
本文介绍了SQL查询具有别名时获取列值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含别名的SQL查询.问题是,当我尝试获取列的值时,它没有显示正确的值:

I have a SQL query that has alias in it. The problem is, when I try to get the values of columns it doesn't show the correct values:

$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时,运行不显示任何值.

Running shows no value when in the database it's actually 10.

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

If I change the above code to the following:

$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的值.为什么第一个示例不正确,这很奇怪.我在这里想念东西吗?

Miraculously, running shows the value of m.ID instead of p.ID. It is strange why the first example is incorrect. Am I missing something here?

推荐答案

在SELECT中为每列使用别名,这些别名是相同的:

Use aliases in SELECT to each column, which are same:

$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'],
    ...
} 

这篇关于SQL查询具有别名时获取列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆