mysql_fetch_object
bhaba
- php
0 Chris (C)0 Tobias Kloth0 Bhaba0 Tobias Kloth0 bhaba
Hallo,
ich habe 2 MySQL-Tabellen "auto", "fahrer" und beide haben die Spalte "name". Nun mache ich eine Abfrage "SELECT * FROM auto,fahrer"
Jetz möchte ich die Namen von beiden mit mysql_fetch_object auslesen mit:
while($row = mysql_fetch_object($result)){
$autoname = $row->auto.name;
$fahrername = $row->fahrer.name;
}
Das gibt selbstverständlich einen Fehler, da PHP mit "auto.name" nichts anfangen kann. Aber wie kann man am günstigsten die beiden Namen ermitteln? (ohne die Spalten umzubenennen)
Bhaba
Hallo,
Du musst die Spalten ja nicht dauerhaft umbenennen. Man kann ja uch sagen
select name as driver from auto...
Dann heißt der faher eben in diesem Ergebnisset "driver"
Grüße
Chris (C)
Hallo Matthias(?),
ich habe 2 MySQL-Tabellen "auto", "fahrer" und beide haben die Spalte "name".
du musst einer der beiden Spalten mit "auto.name as autoname" o.ä. ein Alias zuweisen ->http://www.mysql.de/doc/de/SELECT.html
Nun mache ich eine Abfrage "SELECT * FROM auto,fahrer"
http://www.dclp-faq.de/q/q-sql-select.html
Jetz möchte ich die Namen von beiden mit mysql_fetch_object auslesen mit:
while($row = mysql_fetch_object($result)){
nur so nebenbei - warum eigentlich immer mysql_fetch_object()?
Grüße aus Nürnberg
Tobias
ich habe 2 MySQL-Tabellen "auto", "fahrer" und beide haben die Spalte "name".
du musst einer der beiden Spalten mit "auto.name as autoname" o.ä. ein Alias zuweisen
yipp, das haut soweit hin.
Nun mache ich eine Abfrage "SELECT * FROM auto,fahrer"
http://www.dclp-faq.de/q/q-sql-select.html
nun, ich hatte mir das so gedacht - ich habe ein Template, in dem die Spaltennamen in HTML-Kommentaren drinstehen (<!--name-->). Diese Kommentare lese ich mir mit "ereg" aus und ersetze den Kommentar durch den entsprechenden Wert. Bei der Templateerstellung soll man frei sein, welche Spalten angezeigt werden oder nicht. Also "SELECT *...". Das alles passiert in der while-Schleife, nach dem Motto - Hol erstmal alles raus und wenn es ein Template-Kommentar mit "<!--name-->" gibt, dann ersetze ihn durch den ermittelten Wert.
Ich denke, ich muss wohl erst mal ein Zwischenschritt machen nach dem Motto - Hol alle Felder aus dem Template heraus (die in den Kommentaren stehen) baue die Select-Aliase, hole dann alles entsprechende aus der Datenbank und ersetze es dann im Template... Muss ich erstmal bauen.
Jetz möchte ich die Namen von beiden mit mysql_fetch_object auslesen mit:
while($row = mysql_fetch_object($result)){
nur so nebenbei - warum eigentlich immer mysql_fetch_object()?
was ist daran schlecht?
Bhaba
Hallo Bhaba,
http://www.dclp-faq.de/q/q-sql-select.html
Also "SELECT *...". Das alles passiert in der while-Schleife, nach dem Motto - Hol erstmal alles raus und wenn es ein Template-Kommentar mit "<!--name-->" gibt, dann ersetze ihn durch den ermittelten Wert.
das halte ich aber für keine gute Idee (siehe Link).
Ich denke, ich muss wohl erst mal ein Zwischenschritt machen nach dem Motto - Hol alle Felder aus dem Template heraus (die in den Kommentaren stehen) baue die Select-Aliase, hole dann alles entsprechende aus der Datenbank und ersetze es dann im Template... Muss ich erstmal bauen.
mach es doch andersrum - erst schauen, welche Werte du brauchst und die dann erst aus der Datenbank holen.
nur so nebenbei - warum eigentlich immer mysql_fetch_object()?
was ist daran schlecht?
afaik nichts (habe ich aber auch nicht gesagt :-)) - mir persönlich gefällt die Funktion eben nicht so gut.
Grüße aus Nürnberg
Tobias
Hallo Tobias,
Ich denke, ich muss wohl erst mal ein Zwischenschritt machen nach dem Motto - Hol alle Felder aus dem Template heraus (die in den Kommentaren stehen) baue die Select-Aliase, hole dann alles entsprechende aus der Datenbank und ersetze es dann im Template... Muss ich erstmal bauen.
mach es doch andersrum - erst schauen, welche Werte du brauchst und die dann erst aus der Datenbank holen.
genaus das meine ich ja damit. Damit ich weiss, welche Werte ich brauche (aus welchen Spalten), schaue ich im Template nach. Dort steht dann sowas wie "<!--auto.name-->". Das lese ich aus und kann damit ein SQL Statement generieren: "SELECT name FROM auto". Damit ich das mit den Aliasen hinbekomme generiere ich besser "SELECT name as autoname FROM auto". Den ermittelten Wert setze ich statt den Kommentar und alles sollte gut sein.
Bis denne Bhaba