Hilfe bei sql abfrage und unserialize

hoctar

Erfahrenes Mitglied
Hallo :)
Warum kann ich xy nicht ausgeben ?
PHP:
$sql = mysql_query("SELECT * FROM blub WHERE `id` = 4");
		while($row = mysql_fetch_array($sql))

$row[xy] = unserialize($row[xy]);
echo $row[xy];
 
Möglicherweise schlug die Deserialisierung fehl, was als Rückgabewert ein false bedeutet, das wiederum bei einer echo-Ausgabe aufgrund der String-Typisierung zu einer leeren Zeichenkette wird, die eben nicht sichtbar ist.
Lass dir mal mit var_dump() den Wert ausgeben.
 
error_reporting ist auf E_ALL ?
Lass dir mal eventuelle SQL Fehler ausgeben.
Wenn du var_dump() auf $row['xy'] anwendest, kommt NULL heraus, oder ?
 
ja da kommt NULL raus
und bei error_reporting(E_ALL);
kommt raus:
Notice: Use of undefined constant xy - assumed 'xy' in /var/www/vhosts/narutomania.de/subdomains/test/httpdocs/bggm/7/umbau/test3.php on line 8

Notice: unserialize(): Error at offset 196 of 200 bytes in /var/www/vhosts/narutomania.de/subdomains/test/httpdocs/bggm/7/umbau/test3.php on line 8

Notice: Use of undefined constant xy - assumed 'xy' in /var/www/vhosts/narutomania.de/subdomains/test/httpdocs/bggm/7/umbau/test3.php on line 11
 
Ok, also das xy gehört in Anführungszeichen, wie vorher schon erwähnt. Und der String hat offenbar einen Fehler, ist also kein gültiger serialisierter String.
 
Also ich habe das jetzt so probiert, aber leider geht das auch nicht, obwohl alles richtig ist.
PHP:
$sql = mysql_query("SELECT * FROM blub WHERE `id` = '4'");
  while($row = mysql_fetch_array($sql))
{
$aa = $row['xy'];
$arr = unserialize($aa);
echo $arr['xy'][1];
}

Das ist der serialisierter String und der sollte eigentlich richtig sein.
PHP:
$xy = 'a:9:{i:1;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Erde";}i:2;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Erde";}i:3;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Erde";}i:4;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Wald";}i:5;a:3:{s:3:"lvl";i:1;s:4:"name";s:11:"Dorfzentrum";s:3:"typ";s:4:"Erde";}i:6;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Lehm";}i:7;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Erde";}i:8;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Erde";}i:9;a:3:{s:3:"lvl";i:0;s:4:"name";s:4:"Leer";s:3:"typ";s:4:"Erde";}}';
 
Also bei mir geht die Umwandlung. Bist du sicher, dass du diesen (korrekten) String auch an unserialize() übergibst ?
 
Zurück