Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Verständnisfrage zu php-script

hansapark / 5 Antworten / Flachansicht Nickles

hallo.. mal abgesehen davon dass mein DB-design bestimmt schlecht ist, würde ich gerne verstehen warum dieses script funktioniert, trotz nur einem w1 als echo.

kann man das so produktiv verwenden oder ist es zufall und man muss angst haben es könnte jeden augenblick 'zusammenbrechen'(?)

http://img684.imageshack.us/img684/8982/phpzc.jpg


(es geht um bis zu 10 personen, die maximal einem bild zugeordnet sein können, welche dann als links aufgelistet werden sollen.)
(was unglaublicherweise zu funktionieren scheint)

nimmt dann nach der 'Union' alles den ersten spaltennamen an? also w1(?)
mfg, h.

bei Antwort benachrichtigen
xafford hansapark „Verständnisfrage zu php-script“
Optionen

Ob dieser Query so eingesetzt werden kann hängt davon ab, was Du überhaupt von ihm erwartest dass er tut. Abgesehen davon ist das Datenbanklayout aber wirklich mehr als suboptimal, wenn gleiche Daten in verschiedenen Tabellen verstreut sind. Aber zurück zum Query:

UNION vereinigt die Ergebnisse verschiedener Einzelabfragen und liefert das aggregierte Ergebnis zurück. Hier ergeben sich dann gleich zwei mögliche Probleme:

1. sollten alle Ergebnisse den gleichen Datentyp haben. Ist dies nicht der Fall, so findet intern ein Cast statt. Wie in diesem Fall das Ergebnis aussieht hängt von der eingesetzten Version von MySQL ab und ist also relativ undefiniert.

2. Ergebnisse eines UNION sind DISTINCT, wenn Du also ein Ergebnis bei mehr als einem einzelnen SELECTS zurück geliefert wird, so ist es im Endergebnis des UNION trotzdem nur einmal vorhanden. Um bei deinem Problem zu bleiben: Wenn zwei Personen das gleiche Bild hätten, so wäre es trotzdem nur ein einziges Mal in der Ergebnismenge.

Jetzt zu deinen speziellen Fragen:

kann man das so produktiv verwenden oder ist es zufall und man muss angst haben es könnte jeden augenblick 'zusammenbrechen'(?)

Wie gesagt, das hängt davon ab, was dieser Query leisten soll.

nimmt dann nach der 'Union' alles den ersten spaltennamen an? also w1(?)

Ja, da UNION ohnehin nur gedacht ist wirklich komplett gleichartige Tabellen abzufragen.

Prinzipiell sollte Dir der Namen des Ergebnisses auch egal sein können, Du kannst ja auch einfach ein numerisch indiziertes Ergebnis abfragen (mysql_fetch_row) anstatt mysql_fetch_assoc zu nehmen.

PS: Was meinst Du eigentlich mit folgender Aussage:

warum dieses script funktioniert, trotz nur einem w1 als echo.

Liefert es nur ein einzelnes Ergenis zurück, oder was hast Du als Ausgabe erwartet?

PSS: Fällt mir jetzt erst auf: Dein Script-Ausschnitt will ja in der Schleife noch eine $url holen die nicht existiert. War mir bei der oberflächlichen Betrachtung garnicht aufgefallen. Dein Script ist also allein deswegen fehlerhaft und sollte bei entsprechendem error_reporting mindestens eine E_NOTICE generieren.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen