Der Martin: Fehlermeldung beim auslesen von datenbank

Beitrag lesen

Hallo,

Warning: unserialize() expects parameter 1 to be string, array given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 30
Warning: array_push() expects parameter 1 to be array, boolean given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 29

dann sollte man sich anschauen, was in Zeile 29 und 30 steht.

Das Problem hängt sicherlich mit dem unserialize zusammen

<quote author="Loriot">Ach. Ach was.</quote>

$antwort = array();

$f1=0;
$sql = "SELECT antwort FROM fragebogen WHERE iid = '$id'";
$sql2 = "SELECT wert FROM antwort WHERE aid='$antwort'";

$ergebnis = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_object($ergebnis))
{
array_push($antwort,$row->antwort);
$antwort = unserialize($antwort);

  $wert = mysql_query($sql2) or die(mysql_error());  
    
  $f1=$f1+$wert;  

}

?>

  
Gehen wir logisch vor. Die erste Meldung betrifft das unserialize() in Zeile 30. PHP beschwert sich, dass [unserialize()](http://de1.php.net/manual/en/function.unserialize.php) einen String als Parameter sehen will, $antwort hast du aber als leeres Array definiert und ihm eine Zeile vorher gerade den ersten Arrayeintrag spendiert. Als Folge gibt unserialize() FALSE zurück, das gesamte Array $antwort wird also mit einem schlichten FALSE überschrieben.  
Logisch, dass sich im nächsten Schleifendurchlauf [array_push()](http://de1.php.net/manual/en/function.array-push.php) beklagt, weil es als ersten Parameter ein Array erwartet, aber ein boolsches FALSE bekommt.  
  
Ich verstehe nicht, was der gezeigte Codeausschnitt tun \*soll\*, aber anscheinend steckt ein gravierender Denkfehler dahinter.  
  
So long,  
 Martin  

-- 
Wenn man sieht, was der liebe Gott auf der Erde so alles zulässt, hat man das Gefühl, er experimentiert immer noch.  
  (Sir Peter Ustinov, Charakterdarsteller, †2004)  
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(