sql >> Database >  >> RDS >> Mysql

PHP MySQL mysql_fetch_assoc met arraysleutels onderscheiden door 'as'-aanduidingen

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.




  1. Opslaglimieten van door de gebruiker gedefinieerde MySQL-variabelen

  2. hoe kan ik een tagging-systeem maken met behulp van php en mysql?

  3. JDBC-verbinding mislukt, fout:TCP/IP-verbinding met host mislukt

  4. Hoe Glassfish Server handmatig in Eclipse te configureren