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 .