Abfrage-Ergebnis in Array exportieren?
Abfrage-Ergebnis in Array exportieren?
am 12.10.2005 20:26:04 von Sebastian Suchanek
Hallo NG!
Ich hätte da folgendes Problemchen: Aus einer MySQL-Datenbank
bekomme ich eine Liste User nebst zugehöriger ID. Also z.B.:
ID | Name
---+-----
1 | Hans
2 | Lisa
3 | Willi
Nachdem ich aber in meinem Skript möglicherweise sehr häufig
eine User-ID nach ihrem Namen auflösen muß, ich aber
gleichzeitig auch die Datenbank nicht übermäßig strapazieren
will, hatte ich daran gedacht, die Usernamen irgendwie in ein
Array zu packen (mit der ID als Index), damit ich das dann im
Ergebnis so verwenden kann:
| $i = 2;
| echo $user[$i];
=> "Lisa"
Abgesehen von der "Brute-Force-Methode", also das Ergebnis-Array
der MySQL-Abfrage per Schleife durchzugehen und mir daraus mein
Wunsch-Array zu basteln - gibt es für meinen Wunsch elegantere
Lösungen?
TIA,
Sebastian
--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de
Re: Abfrage-Ergebnis in Array exportieren?
am 12.10.2005 22:30:54 von Niels Braczek
Sebastian Suchanek schrieb:
> Abgesehen von der "Brute-Force-Methode", also das Ergebnis-Array
> der MySQL-Abfrage per Schleife durchzugehen und mir daraus mein
> Wunsch-Array zu basteln - gibt es für meinen Wunsch elegantere
> Lösungen?
Nein, nicht ohne Datenabstraktionsschicht, die das aber ihrerseits auch
wieder in einer Schleife macht.
$result = mysql_query(...) or die(...);
$user = array();
while ($row = mysql_fetch_assoc($result)) {
$user[$row['id']] = $row['name'];
}
mysql_free_result($result);
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´
Re: Abfrage-Ergebnis in Array exportieren?
am 14.10.2005 10:02:59 von Ingo Hamann
Niels Braczek schrieb:
> Sebastian Suchanek schrieb:
>
>
>>Abgesehen von der "Brute-Force-Methode", also das Ergebnis-Array
>>der MySQL-Abfrage per Schleife durchzugehen und mir daraus mein
>>Wunsch-Array zu basteln - gibt es für meinen Wunsch elegantere
>>Lösungen?
>
>
> Nein, nicht ohne Datenabstraktionsschicht, die das aber ihrerseits auch
> wieder in einer Schleife macht.
>
> $result = mysql_query(...) or die(...);
> $user = array();
> while ($row = mysql_fetch_assoc($result)) {
> $user[$row['id']] = $row['name'];
> }
> mysql_free_result($result);
>
Hallo,
wenn Du so viele User abzuhandeln hast: wäre es nicht besser, das Skript
ein wenig anders zu gestalten, so daà es einen User nach dem anderen
durchgeht?
Falls nicht: sind die Einträge in Spalte "ID" reorganisierbar oder
MÃSSEN sie unverändert bleiben?
Gruà Ingo
Re: Abfrage-Ergebnis in Array exportieren?
am 14.10.2005 10:19:27 von Helmut Schmuckermair
> Nachdem ich aber in meinem Skript möglicherweise sehr häufig
> eine User-ID nach ihrem Namen auflösen muß, ich aber
> gleichzeitig auch die Datenbank nicht übermäßig strapazieren
...das strapaziert die Datenbank nicht - dafür ist sie da
> will, hatte ich daran gedacht, die Usernamen irgendwie in ein
> Array zu packen (mit der ID als Index),
Fragen:
Wieviel Speicher ist dafür nötig?
Ist der Speicherverbrauch zu verantworten?
> Wunsch-Array zu basteln - gibt es für meinen Wunsch elegantere
> Lösungen?
Elegant, auch für sonstige Wünsche, ist eine Datenbank
Abstraktionsschicht -> pear.php.net oder AdoDB
Re: Abfrage-Ergebnis in Array exportieren?
am 14.10.2005 15:21:09 von Sebastian Suchanek
Ingo Hamann spoke thusly:
> [...]
> wenn Du so viele User abzuhandeln hast: wäre es nicht
> besser, das Skript ein wenig anders zu gestalten, so daß es
> einen User nach dem anderen durchgeht?
> [...]
Nein, da die User-Auflösung nur Beiwerk ist.
Es sollen alle Bilder aus einer 4images-Galerie eines Users
nebst Kommentare ausgegeben werden. Dazu werden alle Bilder in
einer Schleife der Reihe nach abgearbeitet. Innerhalb dieser
Schleife werden dann alle Kommentare zu jeweils einem Bild aus
der DB geholt und deren Autoren (=User) sollen ebenfalls
aufgelöst werden.
Tschüs,
Sebastian
--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de
Re: Abfrage-Ergebnis in Array exportieren?
am 17.10.2005 08:13:12 von Fabian Schladitz
Sebastian Suchanek schrieb:
> Ingo Hamann spoke thusly:
>=20
>=20
>>[...]
>>wenn Du so viele User abzuhandeln hast: wäre es nicht
>>besser, das Skript ein wenig anders zu gestalten, so daß es
>>einen User nach dem anderen durchgeht?
>>[...]
>=20
>=20
> Nein, da die User-Auflösung nur Beiwerk ist.
> Es sollen alle Bilder aus einer 4images-Galerie eines Users=20
> nebst Kommentare ausgegeben werden. Dazu werden alle Bilder in=20
> einer Schleife der Reihe nach abgearbeitet. Innerhalb dieser=20
> Schleife werden dann alle Kommentare zu jeweils einem Bild aus=20
> der DB geholt und deren Autoren (=3DUser) sollen ebenfalls=20
> aufgelöst werden.
>=20
Das klingt so, als ob das deine Datenbank ganz gut für dich erledigen=20
kann, falls das Design stimmt.
SELECT imagepath, comment, username FROM images LEFT JOIN comments on=20
image_id =3D images.id LEFT JOIN users ON users.id =3D comments.author
So in etwa :-D
--=20
HTH,
Fabian
Re: Abfrage-Ergebnis in Array exportieren?
am 17.10.2005 18:20:45 von Sebastian Suchanek
Fabian Schladitz spoke thusly:
> Sebastian Suchanek schrieb:
>
>> [...]
>> Nein, da die User-Auflösung nur Beiwerk ist.
>> Es sollen alle Bilder aus einer 4images-Galerie eines
>> Users nebst Kommentare ausgegeben werden. Dazu werden alle
>> Bilder in einer Schleife der Reihe nach abgearbeitet.
>> Innerhalb dieser Schleife werden dann alle Kommentare zu
>> jeweils einem Bild aus der DB geholt und deren Autoren
>> (=User) sollen ebenfalls aufgelöst werden.
>>
>
> Das klingt so, als ob das deine Datenbank ganz gut für dich
> erledigen kann, falls das Design stimmt.
>
> SELECT imagepath, comment, username FROM images LEFT JOIN
> comments on image_id = images.id LEFT JOIN users ON
> users.id = comments.author
*PATSCH*
Ja, ja, der Wald und die Bäume. :-)
Danke für den Tip.
Tschüs,
Sebastian
--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de
Re: Abfrage-Ergebnis in Array exportieren?
am 20.10.2005 13:24:55 von Martin Klaffenboeck
Am Wed, 12 Oct 2005 20:26:04 +0200 schrieb Sebastian Suchanek:
> Hallo NG!
>
> Ich hätte da folgendes Problemchen: Aus einer MySQL-Datenbank
> bekomme ich eine Liste User nebst zugehöriger ID. Also z.B.:
>
> ID | Name
> ---+-----
> 1 | Hans
> 2 | Lisa
> 3 | Willi
>
> Nachdem ich aber in meinem Skript möglicherweise sehr häufig
> eine User-ID nach ihrem Namen auflösen muß, ich aber
> gleichzeitig auch die Datenbank nicht übermäßig strapazieren
> will, hatte ich daran gedacht, die Usernamen irgendwie in ein
> Array zu packen (mit der ID als Index), damit ich das dann im
> Ergebnis so verwenden kann:
Naja, irgendwie scheint mir das Humbug zu sein. Letztlich ist ja die
Datenbank genau dafür da.
Wenn du ein Query absetzt, verwendet die Datenbank einen Index um diese
Daten zu bekommen und so lange du nicht mysql_free_result ausführst (was
am ende eines Scriptes automatisch ausgeführt wird) bleibt dein ergebnis
auch im arbeitsspeicher, genau dort wo auch dein array liegen würde. ;-)
Und selbst nach einem free_result bleibt das Ergebnis im Arbeitsspeicher
sozusagen im cache liegen, solange der Speicherplatz nicht anders
gebraucht wurde.
Also denke ich ist es eher Ressourcenverschwendung, das nicht in der
datenbank zu machen.
lg,
Martin