Mailinglisten-Archive |
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