Så länge du använder *
jokertecken kommer du att hitta kolumner med samma namn kommer att skriva över samma nycklar i din associativa array.
Du måste ge kolumnalias till kolumner från minst en av tabellerna:
select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank
Annars kan du använda jokertecknet, men hämta raden som en ordningsmatris:
$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];
Angående din kommentar:SQL har bara *
jokertecken som betyder "alla kolumner från en given tabell, med deras naturliga namn." Du måste alias kolumner uttryckligen, kolumn för kolumn.
Undantag:Om du använder SQLite finns det en pragma full_column_names
alternativ som gör att resultatuppsättningen returnerar kvalificerade kolumnnamn, så att du kan använda *
men nycklarna kommer tillbaka med prefixet med tabellaliasen. Detta är SQLite-specifik och icke-standard SQL.