Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP MySQL mysql_fetch_assoc mit Array-Schlüsseln, die durch „as“-Bezeichnungen gekennzeichnet sind

Solange Sie den * verwenden Platzhalter, werden Sie feststellen, dass Spalten mit demselben Namen dieselben Schlüssel in Ihrem assoziativen Array überschreiben.

Sie müssen den Spalten aus mindestens einer der Tabellen Spaltenaliase zuweisen:

select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank

Oder Sie können den Platzhalter verwenden, aber die Zeile als ordinales Array abrufen:

$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];

Zu Ihrem Kommentar:SQL hat nur den * Platzhalter bedeutet "alle Spalten aus einer bestimmten Tabelle mit ihren natürlichen Namen". Sie müssen Spalten explizit Spalte für Spalte aliasieren.

Ausnahme:Wenn Sie SQLite verwenden, gibt es ein pragma full_column_names Option, die bewirkt, dass die Ergebnismenge qualifizierte Spaltennamen zurückgibt, sodass Sie * verwenden können aber die Schlüssel kommen mit dem Präfix der Tabellenaliasnamen zurück. Dies ist SQLite-spezifisches und nicht standardmäßiges SQL.