phpbar.de logo

Mailinglisten-Archive

[php] In Query-Ergebnis keine korrekten Feldnamen?

[php] In Query-Ergebnis keine korrekten Feldnamen?

Oliver Kummerow naklar_(at)_altavista.net
Wed, 25 Aug 1999 07:33:29 +0200


Hallo,

$row = mysql_fetch_array ( $link_ident ); 

liefert per $row ["fieldname"] die Feldinhalte zurück.

Leider funktioniert dies bei Querys, in denen gleichlautende Feldnamen
auftreten, nicht.

Normalerweise sollte in solchen Fällen ein Bezeichner wie $row
["tablename.fieldname"] funktionieren. Darauf erhalte ich aber von PHP
keinen Rückgabewert.

Beispiel: SELECT * 
	  FROM atabelle a, btabelle b
	  WHERE a.id = b.id

Das Feld id ist danach nicht eindeutig identifizierbar. PHP liefert mit
$row ["id"] den Wert des letzten Feldes mit dem diesem Namen zurück -
klar, wenn in dem assoziativen Array $row "id" der gleichlautende $key
ist, wird mit dem letzten $value überschrieben. Mit mysql_fetch_object
passiert genau das Gleiche.

Es ginge nur, wenn ich in der Query jedes Feld einzeln aufführen und
jedem zweideutigen einen Alias verpassen würde, also 
Beispiel: SELECT a.id as aid, b.id as bid 
		[,..sämtliche weiteren Felder einzeln benennen..] 
	  FROM atabelle a, btabelle b
	  WHERE a.id = b.id

Das ist häßlich, weil man bei zusätzlichen Feldern in den Tabellen
ständig die Querys anpassen muß. Und für ein SQL-Frontend absolut
unüblich. Also anders gesagt, das wäre, wenn ich mich nicht täusche
(fürchte nein) ein dicker Fehler in PHP.

Habe ich was übersehen, oder welche Lösung ist noch denkbar?

Hier der Prüf-Code:
echo "row [\"id\"]==" . $row ["id"];  
// Es kommt: Eine der beiden ids. Ist aber schlichtweg falsch, denn id
ist zweideutig !!!
echo "row [\"a.id\"]==" . $row ["a.id"]; 
// Richtige Abfrage - es kommt nichts
echo "row [\"b.id\"]==" . $row ["b.id"]; 
// Richtige Abfrage - es kommt nichts


Mit freundlichen Grüßen,
Oliver Kummerow
email: naklar_(at)_altavista.net


php::bar PHP Wiki   -   Listenarchive