MySQL-Einträge in Arrays schreiben und lesen

MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 14:28:08 von Frederik.Mentrup

Hi
ich habe mehrere Zeilen in einer Datenbank die mehrere Spalten
enthalten. Sie sollen alle in eine mehrdimensionale Array geschrieben
und hinterher wieder gelesen werden. Ich habe schon überall rumgesucht
und alles mögliche schon ausprobiert, aber ich kriege es nicht hin.

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 14:37:05 von Tobias Kutzler

Hallo Frederik (?),

Nidhogg schrieb:
^^^^^^^

> Hi
> ich habe mehrere Zeilen in einer Datenbank die mehrere Spalten
> enthalten. Sie sollen alle in eine mehrdimensionale Array geschrieben
> und hinterher wieder gelesen werden. Ich habe schon überall rumgesucht
> und alles mögliche schon ausprobiert, aber ich kriege es nicht hin.
>

"Ich habe mehrere Fächer in einem Schrank die mehrere Klamotten
enthalten. Sie sollen alle in einen Koffer gepackt werden und im Urlaub
wieder ausgepackt werden. Ich habe schon überall rumgesucht
und alles mögliche schon ausprobiert, aber ich kriege es nicht hin."

SCNR! :-)

Die Infos, die Du uns gibst, sind nicht wirklich ausreichend. Was hast
Du bisher gemacht und was davon hat nicht funktioniert? Fehlermeldungen?

Wir würden uns hier auch *auszugsweise* über Code freuen, den man ggf.
korrigieren könnte.

Ciao,
Tobias

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 14:41:32 von Frederik.Mentrup

in der Datenbank stehen beispielsweise von mehreren Personen ID +Name +
Straße + Telefonnummer.
Jetzt will ich, dass diese Daten in ein Array geschrieben werden, wo
ich anhand der ID den Namen oder die Straße von einer Person lesen
kann.

Re: Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 14:55:34 von Ralf Zschemisch

Am Tue, 08 Aug 2006 05:41:32 -0700 schrieb

Nidhogg:
^- bitte!

> in der Datenbank stehen beispielsweise von mehreren Personen ID +Name +
> Straße + Telefonnummer.

> Jetzt will ich, dass diese Daten in ein Array geschrieben werden, wo
> ich anhand der ID den Namen oder die Straße von einer Person lesen
> kann.

17.10. Ich habe eine Tabelle mit n Einträgen und möchte auf jeder Seite
m davon anzeigen
http://www.php-faq.de/q/q-mysql-seitenweise.html

// Datenbankabfrage ausführen.
$query = "SELECT id, name, strasse, telefonnummer FROM ".$table
." LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);

hth

r23

--
http://www.myoos.de/fraktal/zoom.php

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 15:58:42 von Tobias Kutzler

Nidhogg schrieb:
> in der Datenbank stehen beispielsweise von mehreren Personen ID +Name +
> Straße + Telefonnummer.
> Jetzt will ich, dass diese Daten in ein Array geschrieben werden, wo
> ich anhand der ID den Namen oder die Straße von einer Person lesen
> kann.
>
Dann musst Du die Daten aus der Datenbank auslesen und während Du durch
die Ergebnisliste iterierst, ein Array befüllen. Beim Befüllen vergibst
Du dann den Array-Index nicht automatisch sondern mit der ID aus der
Datenbank.

$dataArray = array();

mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$dataArray[$row['id']] = $row;
}

mysql_free_result($result);
?>

Im Array $dataArray sind dann die Datensätze gespeichert. Um durch die
Datensätze zu iterieren kannst Du foreach($dataArray as $row) nehmen und
zur Abfrage eines bestimmten Datensatzes mit einer bestimmten ID Dann
$dataArray[$id].

Ciao,
Tobias

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 16:55:18 von Niels Braczek

Ralf Zschemisch schrieb:

> // Datenbankabfrage ausführen.
> $query =3D "SELECT id, name, strasse, telefonnummer FROM ".$table
> ." LIMIT ".$start.",".$limit;
> $resultID =3D @mysql_query($query);
^
Zeige soetwas bitte nicht einem offensichtlichen Anfänger.

$resultID =3D mysql_query($query) or die($query.'
'.mysql_error());

ist (did|pr)aktisch sehr viel sinnvoller.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: MySQL-Einträgein Arrays schreiben und lesen

am 08.08.2006 17:59:01 von Ralf Zschemisch

Am Tue, 08 Aug 2006 16:55:18 +0200 schrieb Niels Braczek:

> $resultID = mysql_query($query) or die($query.'
'.mysql_error());
>
> ist (did|pr)aktisch sehr viel sinnvoller.


Die Ausgabe von Fehlermeldungen an Besucher einer
WebSeite finde ich auch immer total sinnvoll.

cu

r23

--
http://www.myoos.de/fraktal/zoom.php

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 18:25:45 von Gregor Kofler

Ralf Zschemisch meinte:
> Am Tue, 08 Aug 2006 16:55:18 +0200 schrieb Niels Braczek:
>
>> $resultID = mysql_query($query) or die($query.'
'.mysql_error());
>>
>> ist (did|pr)aktisch sehr viel sinnvoller.
>
>
> Die Ausgabe von Fehlermeldungen an Besucher einer
> WebSeite finde ich auch immer total sinnvoll.

Du hast Websites mit fehlerhaften Queries am Laufen?

Gruß, Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: MySQL-Einträgein Arrays schreiben und lesen

am 08.08.2006 18:29:02 von Sven Drieling

Ralf Zschemisch wrote:

Hallo,

>
> Die Ausgabe von Fehlermeldungen an Besucher einer
> WebSeite finde ich auch immer total sinnvoll.

display_errors - Zum Unterdrücken der Fehleranzeige
error_log - Zum Loggen der Fehlermeldungen für die Analyse

Eigener Error-Handler für speziellere Sachen.


Mehr im PHP-Handbuch unter: XXXII. Error Handling and Logging Function.=



tschuess
[|8:)
--=20
PHP 5: Hilfreiche Fehlermeldungen mit odebugger von Johan Barbier
http://www.sven-drieling.de/diary/2006/07/05/PHP_odebugger.h tml

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 20:39:24 von Niels Braczek

Ralf Zschemisch schrieb:
> Am Tue, 08 Aug 2006 16:55:18 +0200 schrieb Niels Braczek:
>=20
>> $resultID =3D mysql_query($query) or die($query.'
'.mysql_error());=

>>=20
>> ist (did|pr)aktisch sehr viel sinnvoller.
>=20
>
> Die Ausgabe von Fehlermeldungen an Besucher einer
> WebSeite finde ich auch immer total sinnvoll.

die() ist sicherlich die schlechteste akzeptable Art der
Fehlerbehandlung. Es spricht ja nichts dagegen, statt die() eine andere
Funktion zu nutzen, die dem Entwickler die notwendigen Informationen
anders als über eine einfache Ausgabe zukommen lässt. die() ist aber =
--
gerade während der Entwicklung -- die einfachste Lösung. Und alle Mal=
e
einer fehlenden Fehlerbehandlung vorzuziehen.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: MySQL-Einträgein Arrays schreiben und lesen

am 08.08.2006 22:26:41 von Martin Kaffanke

Am Tue, 08 Aug 2006 20:39:24 +0200 schrieb Niels Braczek:

> Ralf Zschemisch schrieb:
>> Am Tue, 08 Aug 2006 16:55:18 +0200 schrieb Niels Braczek:
>>
>>> $resultID = mysql_query($query) or die($query.'
'.mysql_error());
>>>
>>> ist (did|pr)aktisch sehr viel sinnvoller.
>>
>>
>> Die Ausgabe von Fehlermeldungen an Besucher einer
>> WebSeite finde ich auch immer total sinnvoll.
>
> die() ist sicherlich die schlechteste akzeptable Art der
> Fehlerbehandlung. Es spricht ja nichts dagegen, statt die() eine andere
> Funktion zu nutzen, die dem Entwickler die notwendigen Informationen
> anders als über eine einfache Ausgabe zukommen lässt. die() ist aber --
> gerade während der Entwicklung -- die einfachste Lösung. Und alle Male
> einer fehlenden Fehlerbehandlung vorzuziehen.

Also ich habe in der Config immer ein $developer, welches auf der
testmaschine true und auf dem Server false ist, wodurch sich das ganz gut
trennen lässt. Und dann gibts mydie() welches je nach $developer eine
Höfliche oder eben eine Ehrliche Antwort ausgibt.

lg,
Martin

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 23:28:51 von Niels Braczek

Martin Kaffanke schrieb:
> Am Tue, 08 Aug 2006 20:39:24 +0200 schrieb Niels Braczek:
>=20
>> Ralf Zschemisch schrieb:
>>> Am Tue, 08 Aug 2006 16:55:18 +0200 schrieb Niels Braczek:
>>>=20
>>>> $resultID =3D mysql_query($query) or die($query.'
'.mysql_error()=
);
>>>>=20
>>>> ist (did|pr)aktisch sehr viel sinnvoller.
>>>=20
>>>
>>> Die Ausgabe von Fehlermeldungen an Besucher einer
>>> WebSeite finde ich auch immer total sinnvoll.
>>=20
>> die() ist sicherlich die schlechteste akzeptable Art der
>> Fehlerbehandlung. Es spricht ja nichts dagegen, statt die() eine ander=
e
>> Funktion zu nutzen, die dem Entwickler die notwendigen Informationen
>> anders als über eine einfache Ausgabe zukommen lässt. die() ist ab=
er --
>> gerade während der Entwicklung -- die einfachste Lösung. Und alle =
Male
>> einer fehlenden Fehlerbehandlung vorzuziehen.
>=20
> Also ich habe in der Config immer ein $developer, welches auf der
> testmaschine true und auf dem Server false ist, wodurch sich das ganz g=
ut
> trennen lässt. Und dann gibts mydie() welches je nach $developer ein=
e
> Höfliche oder eben eine Ehrliche Antwort ausgibt.

In der Praxis benutze ich einen eigenen Error-Handler, statt die() kommt
trigger_error() zum Einsatz. Das lässt sich mit error_reporting und
display_errors hervorragend handhaben, auch wenn man nur Teile einer
Applikation beisteuert.

Hier ging es mir im Wesentlichen darum darauf hinzuweisen, dass eine
fehlende Fehlerbehandlung an sich schon schlecht ist und sogar
gefährlich wird, wenn man Fehlermeldungen mit @ unterdrückt. Ein
Doppelfehler, den man gerade Anfängern nicht mal zeigen sollte.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: MySQL-Einträge in Arrays schreiben und lesen

am 08.08.2006 23:47:25 von Rainer Hinz

Moin,

auch wenn ich kein verfechter des Realnamen bin, klingt Nidhogg doch=20
merkwürdig.

Nidhogg wrote:
> Hi
> ich habe mehrere Zeilen in einer Datenbank die mehrere Spalten
> enthalten. Sie sollen alle in eine mehrdimensionale Array geschrieben
> und hinterher wieder gelesen werden. Ich habe schon überall rumgesuch=
t
> und alles mögliche schon ausprobiert, aber ich kriege es nicht hin.
>=20

Versuche das zum Einlesen:

$result=3Dmysql_query_adb("database", "SELECT * FROM {TABELLE} WHERE=20
{IRGENDWAS}");
if( $result ){
$commondata=3Dmysql_fetch_row($result);
$numcols=3Dmysql_num_fields($result);
for( $col=3D0; $col<$numcols ; $col++){
$commondata[mysql_field_name($result, $col)]=3D$commondata[$col]=
;
}
}

Und zurück geht es folgendermaßen:

$updatequery=3D" SET ";
foreach( $commondata as $datacol =3D> $datavalue ){
if( $datavalue!=3Dnull ){
$updatequery.=3D" $datacol=3D'".$datavalue."', ";
} else {
$updatequery.=3D" $datacol=3DNULL, ";
}
}
// cut the last comma
if( strlen($updatequery)>5 ) $updatequery=3Dsubstr($updatequery, 0,=20
strlen($updatequery)-2); else { echo "Nichts zum Updaten!"; return true; =
}
=09
$result=3D$mysql_query_adb("database", "UPDATE {TABELLE} $updatequery=20
WHERE {IRGENDWAS}");

Die Abfrage ob $datavalue null ist ist wichtig, wenn du mit Null Werten=20
hantierst.

Gruß
Anni

Re: MySQL-Einträgein Arrays schreiben und lesen

am 09.08.2006 01:00:22 von Ralf Zschemisch

Am Tue, 08 Aug 2006 20:39:24 +0200 schrieb Niels Braczek:

>>> $resultID = mysql_query($query) or die($query.'
'.mysql_error());
>>>
>>> ist (did|pr)aktisch sehr viel sinnvoller.
>>
>>
>> Die Ausgabe von Fehlermeldungen an Besucher einer
>> WebSeite finde ich auch immer total sinnvoll.
>
> die() ist sicherlich die schlechteste akzeptable Art der
> Fehlerbehandlung.

Bei einem, wie du selber festgestellt hast, "einem offensichtlichen
Anfänger", der auch noch mit personenbezogenen Daten spielen möchte,
verursacht die Zeile

$resultID = @mysql_query($query);

auf dem WebServer (im produktiven einsatz - weniger Schaden als dein
Vorschlag.

die($query.'
'.mysql_error());

Ein möglicher Angreifer erhält z.B. bei deinem Vorschlag optimale
Ergebnisse. Daher sollte man - meiner Meinung nach -
dein
die($query.'
'.mysql_error());
keinem Anfänger zeigen.

Das @ boese [tm] ist - stimme ich dir zwar zu, aber dass ich bei meinem
posting das Skript aus den FAQs nicht änderte - hatte seinen Grund :)

bye

r23

--
http://www.myoos.de/fraktal/zoom.php

Re: MySQL-Einträge in Arrays schreiben und lesen

am 09.08.2006 10:55:42 von Ulf Kadner

Ralf Zschemisch wrote:

> Bei einem, wie du selber festgestellt hast, "einem offensichtlichen
> Anfänger", der auch noch mit personenbezogenen Daten spielen möchte,
> verursacht die Zeile
>
> $resultID = @mysql_query($query);
>
> auf dem WebServer (im produktiven einsatz - weniger Schaden als dein
> Vorschlag.

Und der Betroffene kommt irgendwann wieder hier eingetrudelt, mit der
Frage warum sein Code nicht funktioniert. "Fehlermeldung? Was fuer ne
Fehlermeldung? Da bekomm ich keine!"

Derartiges gabs hier schon zur Genuege und bedarf keiner Fortsetzung.

PS.: Es ist immer schlechter Stil Fehlermeldungen unerkannt zu verbergen!

Re: MySQL-Einträge in Arrays schreiben und lesen

am 09.08.2006 11:40:01 von Rainer Hinz

Ulf Kadner wrote:

> Derartiges gabs hier schon zur Genuege und bedarf keiner Fortsetzung.
>
> PS.: Es ist immer schlechter Stil Fehlermeldungen unerkannt zu verbergen!

Genau: Wenn eine Anwendung nicht mehr sichtbar ist, wenn man
error_reporting auf E_ALL stellt, dann wird es Zeit, den Programmierer
auszuwechseln.