0

エイリアスを含む 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。最初の例が間違っている理由は奇妙です。ここで何か不足していますか?

4

2 に答える 2