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

标签 php mysql pdo alias

我有一个包含别名的 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。很奇怪为什么第一个例子是错误的。我在这里遗漏了什么吗?

最佳答案

你应该是这样的......

SELECT p.ID as p_ID, ...

还有

'ID' => $row['p_ID'],

关于php - 当 SQL 查询有别名时获取列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18932205/

相关文章:

mysql - before update 触发器生成哈希的语法

mysql - 尝试创建事件时出现问题

php - 使用 PDO 获取上一行以创建链接

mysql - PDO:连接到数据库服务器(不是特定的数据库名称)

javascript - 我想在我的 ajax 回调函数中设置一个 url

php - 存储网站数据 - JSON 与 SQL

php - 如何根据用户输入创建链接

php - 如何自动运行php命令行?

MYSQL 访问被拒绝 'user' @'ip'

php - 相关产品 SQL 查询