MySQL Befehle "lose" im Quelltext?? Geht sicher anders oder?

casbar

Cadet 4th Year
Registriert
Dez. 2004
Beiträge
115
Hallo!
Starte gerade ein größeres PHP u MySQL Projekt und wollte die jenigen fragen die sowas schonma gemacht habe ob ihr auch bei jeden select das Query in den quelltext geschrieben habt mit dem result usw... für jeden popeligen SQL Befehl...
Geht doch sicher anders oder?

Hoffe ihr versteht was ich meine! :)

casbar
 
:) oke...

also:
es kommt ja, zB bei einem administrations Bereich einer Homepage, super oft vor dass man verschieden selects, updates usw. macht...
Jetzt versuche ich ja den Quelltext trotz den tausenden von Zeilen übersichtlich zu halten und versuche den so schlicht wie möglich zu schreiben.

Ich schreibe dann zB immer so:
Code:
$query = "select * from test where id='$id';
$result = mysql_query($query);

$row = mysql_fetch_array($result);

geht das auch anders mit weniger text? bzw. machen das die "Profis" auch so? Kommt mir irgendwie ein bisschen komisch vor dass man immer den ganzen SELECT hinschreiben muss.

Hoffe das hat geholfen...:)

casbar
 
Was du meinst ist Objekt Orientiert Programmierung.
Damit ist es wesentleichter zu arbeiten, und er Code ist wesenlich besser zu verwalten.

Grüße

tewes
 
Tipp am rande: nicht SELECT * FROM ...
verwenden. Da müssen nämlich jedes Mal wieder die Spalten ermittelt werden, was zu Performanceverlust führt. Deshalb besser direkt die Spalten angeben.

PS: stimmt, da war noch was.. stimmt natürlich XunnD
 
Zuletzt bearbeitet:
Backslash schrieb:
Tipp am rande: nicht SELECT * FROM ...
verwenden. Da müssen nämlich jedes Mal wieder die Spalten ermittelt werden, was zu Performanceverlust führt. Deshalb besser direkt die Spalten angeben.

Ich kenne diese Regel auch, bezweifle aber, dass durch das Holen der Spaltennamen der Performanceverlust entsteht, denn der SQL-Optimierer und -parser holt sie am Anfang sowieso, um überhaupt zu prüfen, ob die Spalte existiert...

Wenn, dann entsteht der Performanceverlust dadurch, dass zuviele Spalten im Ergebnis übermittelt werden müssen.

Gruß, XunnD
 
Wie tewes schon schreibt, die "Profis" gehen den Weg der Objekt bzw Aspekt Orientiert Programmierung und legen dafür noch ein Database Abstraction Layer bzw ein Persistence Layer dazwischen.

Dieser Layer (Schicht) trennt dann die Anwendung die du schreibt von den Datenbank.

Von der Anwendung aus rufst du dann Sachen auf wie:

Code:
#Java Syntax!
UserVO  user = dbUtil.getUserById(userID);

Sprich, ich hol mir den User mit der "userID" aus der Datenbank. Natürlich muss ich getUserById selber schreiben, aber nur einmal.

Und ob getUserById auf eine MySQL-Datenbank, Text-Dateien oder XML-Daten zugreift, spielt an der Stelle keine Rolle mehr.

Bei Java heißen diese Frameworks z.B. OJB (alt) und Hibernate (neu).


Ich hoffe das war jetzt nicht zu abstrakt.

Gruß
Nox
 
Ja. Natürlich liegt es nahe, oft genutzte Prozeduren in separate Funktionen auszulagern. Die Vorteile wurden schon genannt. Ich mache es zur Zeit so, dass ich nicht direkt über mysql_query etc. gehe, sondern diese Funktionen in eigene Funktionen gepackt habe, um flexibel auf Systemänderungen reagieren zu können (z.B. einfache Migration von MySQL nach PostgreSQL).


Ich dachte, er will jetzt die komplette SQL-Funktionalität mit Joins, Subselects, etc. über Klassen abbilden...
Da hätte ich dann viel Spaß gewünscht.

Frohes Fest wünscht
XunnD
 
Zurück
Oben