Zolang u de *
. gebruikt wildcard, zult u zien dat kolommen met dezelfde naam dezelfde sleutels in uw associatieve array zullen overschrijven.
U moet kolomaliassen geven aan kolommen uit ten minste één van de tabellen:
select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank
Of je kunt het jokerteken gebruiken, maar de rij ophalen als een ordinale array:
$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];
Over uw opmerking:SQL heeft alleen de *
jokerteken betekent "alle kolommen uit een bepaalde tabel, met hun natuurlijke naam." U moet kolommen expliciet een alias noemen, per kolom.
Uitzondering:als je SQLite gebruikt, is er een pragma full_column_names
optie die ervoor zorgt dat de resultaatset gekwalificeerde kolomnamen retourneert, zodat u *
. kunt gebruiken maar de sleutels komen terug met het voorvoegsel van de tabelaliassen. Dit is SQLite-specifiek en niet-standaard SQL.