我有一個SQL查詢,它有別名。問題是,當我試圖讓列不顯示正確的值的值:當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
值。很奇怪爲什麼第一個例子不正確。我在這裏錯過了什麼嗎?
'$ result = $ this-> dbconnect-> query($ sql) - > fetchAll();'是您需要的全部**。 –
@common_sense感謝您的輸入,我上面的代碼是原始的精簡版,使問題更容易理解,所以使用建議的代碼是不可行的 – kenanng
第一個代碼塊...'['p。* **']'不存在。在第二個塊中,'p.ID'被'm.ID'覆蓋(因爲它們都被命名爲「ID」,後面的計數)......所以使用別名。 – djot