Cannot access empty property

Hallo,
ich lese eine MySQL-Datenbank aus und möchte die Daten in ein Array übergeben.
Die Schlüssel des Arrays sollen die gleichen sein, wie die der SQL-Tabelle.
Bsp.:
SQL-Tabelle:
$sql_result[‚name‘]

soll werden:
$daten[‚name‘]

Nun habe ich mein Glück versucht mit folgendem Code:

foreach ($sql\_result AS $key-\>$value) {
 $daten['$key']=$value;
 }

Problem an der Sache ist, das nicht zwangsläufig jedes Feld in der MySQL-Tabelle gefüllt ist, somit erhalte ich dann die Fehlermeldung:
cannot access empty property

Welche Möglichkeit hätte ich, trotzdem alle Felder entsprechend zu übernehmen?

Danke und Gruß

Marcel

Hallo,
ich lese eine MySQL-Datenbank aus und möchte die Daten in ein
Array übergeben.
Die Schlüssel des Arrays sollen die gleichen sein, wie die der
SQL-Tabelle.
Bsp.:
SQL-Tabelle:
$sql_result[‚name‘]

soll werden:
$daten[‚name‘]

Nun habe ich mein Glück versucht mit folgendem Code:

foreach ($sql_result AS $key->$value) {
$daten[’$key’]=$value;
}

kann es sein, dass $daten[’$key’] besser $daten["$key"] oder noch besser $daten[$key] heissen sollte?

Problem an der Sache ist, das nicht zwangsläufig jedes Feld in
der MySQL-Tabelle gefüllt ist, somit erhalte ich dann die
Fehlermeldung:

dann hast du aber in deinem result ein element mit dem key mysql.spaltenname und dem wert null oder „“ je nachdem halt, also eigentlich kein problem.

cannot access empty property

der fehler kommt aber nicht in der chleife oben?!

wie sieht ein vardump auf $sql_result aus?

Hi dog.je,

kann es sein, dass $daten[’$key’] besser $daten["$key"] oder
noch besser $daten[$key] heissen sollte?

Hmm, kann sein, wird wohl sogar, aber habe grade mal die zeile entfernt und nur die Schleife getestet. Also wohl für das Problem erstmal nebensächlich, trotzdem danke für den Hinweis.

dann hast du aber in deinem result ein element mit dem key
mysql.spaltenname und dem wert null oder „“ je nachdem halt,
also eigentlich kein problem.

richtig, mit var_dump($sql_result);
bekomme ich die Datensätze angezeigt, teilweise sind die Felder/Spalten halt mit dem Wert NULL.

der fehler kommt aber nicht in der chleife oben?!

Doch, der Fehler wird mit
foreach ($sql_result AS $key->$value) {

}

erzeugt.

Gruß

Marcel

Hallo Marcel,

Hallo,
ich lese eine MySQL-Datenbank aus und möchte die Daten in ein
Array übergeben.

das ist doch das, was mysql_fetch_assoc sowieso zurück gibt, warum versuchst du das nochmal umzukopieren ?

$result = mysql_query("…");
if (mysql_num_rows($result)>0) {
$daten = mysql_fetch_assoc($result);
}

liefert die erste Zeile der SQL-Abfrage in $daten genau so, wie du geschrieben hast.

mit

$result = mysql_query("…");
if (mysql_num_rows($result)>0) {
while($daten = mysql_fetch_assoc($result)) {
// tue etwas für jede Zeile
};
}

oder mit

while($zeile = mysql_fetch_assoc($result)) {
$daten[] = $zeile;
};

kopierst du die Daten in ein 2-Dimensionales Array, bei welchen du mit $daten[2][„spalte“] auf die einzelnen Zeilen (hier 2, also 3. Zeile) und Spalten zugreifen kannst.

Alexander

Hallo Alx,
krasse Sache, danke du hast mir die Augen geöffnet *vordenkopfschlag*

das ist doch das, was mysql_fetch_assoc sowieso zurück gibt,
warum versuchst du das nochmal umzukopieren ?

Gruß und schönes Wochenende

Marcel

Hi Alx,
ich hab zwar mit deiner Hilfe das erste Problem gelöst, stehe aber nun vor dem gleichen Fehler.

Nun möchte ich die Daten mit Schlüsselbezeichner ausgeben.
Am einfachsten mit foreach:

foreach ($daten AS $key-\>$value) {
 echo $key.": ".$value;
 }

Aber hier stoße ich nun wieder auf die Fehlermeldung:
cannot access empty property,
weil ja einige Felder den Wert NULL enthalten.

Weißt du hierzu evtl. eine Lösung?

Danke und Gruß Marcel

Nun möchte ich die Daten mit Schlüsselbezeichner ausgeben.
Am einfachsten mit foreach:

foreach ($daten AS $key->$value) {
echo $key.": ".$value;
}

Aber hier stoße ich nun wieder auf die Fehlermeldung:
cannot access empty property,
weil ja einige Felder den Wert NULL enthalten.

erst beim kopieren udn probieren aufgefallen:
willst du denn ein objekt erzeugen?
du schreibst:
foreach ($daten AS $key->$value)
meinst du nicht eher:
foreach ($daten AS $key = > $value)

Und auch das Problem ist gelöst…
richtig,
=> statt ->
Das war’s tatsächlich schon.
Vielen Dank und schönes Wochenende…

Gruß Marcel

foreach ($daten AS $key = > $value)