-
Deserialize klappt nicht
Hallo Team,
ich schreibe gerade eine Erweiterung - eine Bewertungsfunktion mit Sternchen (erstmal für Kunden, später will ich Sie einstellen).
An einer Stelle hänge ich:
Ich will das jedes Mitglied nur einmal einen Shop oder ähnliches bewerten kann.
Dazu will ich in die DB (tl_member -> Spalte shopsRated als BLOB) einen serialisierten String mit allen IDs schreiben, die das Mitglied schon bewertet hat.
Mein Problem: Weder unserialize noch deserialize gibt mir den korrekten String aus:
Weder mit array(deserialize(..)) gecasted, noch mit unserialize, noch mit deserialize (serialisierte Daten, true)
Ausgabe deserialize($var, true):
Pushed:Array ( [0] => $shopID [1] => 24 [2] => 25 [3] => 999 )
Serialisiert:a:4:{i:0;s:7:"$shopID";i:1;s:2:"24";i :2;s:2:"25";i:3;s:3:"999";}
Unserialisiert:Array ( [0] => s:64:"a:4:{i:0;s:7:"$shopID";i:1;s:2:"24";i:2;s:2: "25";i:3;s:3:"999";}"; )
PHP-Code:
array_push($shopsRated, "24","25","999");
echo '<br /> Pushed:';
print_r($shopsRated).'<br />';
$shopsRated = serialize($shopsRated);
echo '<br /> Serialisiert:';
print_r($shopsRated).'<br />';
// $shopsRated = mysql_real_escape_string($shopsRated);
// echo '<br /> Escaped:';
// print_r($shopsRated).'<br />';
$objResult = $this->Database->prepare("UPDATE tl_member SET shopsRated=? WHERE id=?")->execute(serialize($shopsRated),$memberID);
$objResult = $this->Database->prepare("SELECT shopsRated FROM tl_member WHERE id=?")->execute($memberID);
//$shopsRated = unserialize ($objResult->shopsRated);
$erg = unserialize($objResult->shopsRated);
echo '<br /> Unserialisiert:';
print_r($erg).'<br />';
Hab noch nicht mit serialisierten Werten gearbeitet. Kann jemand weiterhelfen ? Danke .
-
Contao hat eine extra Funktion namens "deserialize" dafür.
http://blog.qzminski.com/article/ten...functions.html
-
Hab ich geschrieben ....
Danke für den Tipp,
aber habe ich doch oben bereits geschrieben:
"Weder mit array(deserialize(..)) gecasted, noch mit unserialize, noch mit deserialize (serialisierte Daten, true)"
-
moin,
also in deinem Beispiel serialisierst du 2 x die Variable '$shopsRated'.
Nimm das beim Execute in die DB mal weg.
Gruß, Cliff
-
Vielen Dank !
Hi Cliffen,
Vielen Dank ! Das wars !
Es ist wieder eins der typischen "den Wald vor lauter Bäumen nicht sehen" Bsp. gewesen. Oder wahlweise auch "man sollte nicht Feiertage und Wochenenden und tage und nächtelang durcharbeiten". Sonst wird man Matsch im Gehirn !!!!
Also Danke nochmal!
VG Mickey.