2016-05-12 11 views
0

Ich erhalte diesen Fehler: Hinweis: unserialize(): Fehler bei Offset 0 von 5472 Bytes in/home3/trisoni2/public_html/ohappy/admin/model/Verlängerung/Modul.php on line 32Hinweis: unserialize(): Fehler bei Offset 0 von 5472 Bytes Fehler

Ich weiß nicht, was der Grund sein könnte. In PHP kann ich nicht wirklich verstehen, so gebe ich Stück Code mit einem 32-String

if ($query->row) { 
     if($query->row['code'] == 'dimastas'){ 
      return $setting = unserialize($query->row['setting']); /*<--- 32 string*/ 
     } 
     return json_decode($query->row['setting'], true); 
    } else { 
     return array(); 
    } 
} 

Zunächst werden die Einträge in der Datenbank wie folgt aussehen:

a:5:{s:6:"status";s:1:"1";s:4:"name";s:7:"Default";s:5:"class";s:0:"";s:6:"layout";s:4377:"[{"cls":"full-col full-slider","bgcolor":"","bgimage":"","fullwidth":"1","parallax":"0","sfxcls":null,"padding":"","margin":"","iposition":null,"iattachment":null,"cols": 

Aber nach einer einfachen Modifikation, die sind durch die Opencart CMS bereitgestellt, sind die Einträge in der Datenbank wie folgt aus:

{"status":"1","name":"Default","class":"","layout":"[{\"cls\":\"full-col full-slider\",\"bgcolor\":\"\",\"bgimage\":\"\",\"fullwidth\":\"1\",\"parallax\":\"0\",\"sfxcls\":null,\"padding\":\"\",\"margin\":\"\",\"iposition\":null,\"iattachment\":null,\"cols\": 

Und danach alles, was ich den Fehler: Notic e: unserialize(): Fehler bei Offset 0 von 5472 Bytes in /home3/trisoni2/public_html/ohappy/admin/model/extension/module.php auf der Leitung 32

In dem, was die Ursache des Fehlers sein könnte und wie man es repariert? Bitte helfen

+2

Das ist falsch .... *** das zweite ist JSON *** aber ** das erste ist ein serialisiertes Objekt *** Sie kann von ihren Unterschriften erzählen ... – Poiz

+0

Ja .. Hier in Zeile 32 versuchen Sie, json-Daten zu entserialisieren, was eine falsche Eingabe für die Funktion 'unserialize' ist. – Ali

+0

Das sieht nicht wie eine phpMyAdmin Fehlermeldung aus, vermisse ich einen Grund, warum dies phpmyadmin getaggt ist? –

Antwort

1

etwas nicht in Ordnung scheint hier: die zweite ist JSON aber das erste ein serialisierte Objekt ist * Sie sind von ihren Unterschriften sagen kann ... Beachten Sie, dass die erste Präfixe wie eine hat :, s :, i: Die a: bedeutet, dass alles, was in den Curly Braces folgt, ein Array ist. s steht für String und i für Integer. Sobald Sie mit dieser Struktur durcheinander gebracht haben, haben Sie ein Problem .... Wenn Sie die Werte auf die erste zurückgesetzt, wird alles wieder gut funktionieren ...

Ich konvertiere nur die zweite (die JSON ist) zurück in eine PHP Serialized Data. So, jetzt versuchen, den Inhalt der Tabelle-Feld mit diesem Wert zu ersetzen - genau so, wie es hier ist:

O:8:"stdClass":4:{s:6:"status";s:1:"1";s:4:"name";s:7:"Default";s:5:"class";s:0:"";s:6:"layout";a:1:{i:0;O:8:"stdClass":11:{s:3:"cls";s:20:"full-col full-slider";s:7:"bgcolor";s:0:"";s:7:"bgimage";s:0:"";s:9:"fullwidth";s:1:"1";s:8:"parallax";s:1:"0";s:6:"sfxcls";N;s:7:"padding";s:0:"";s:6:"margin";s:0:"";s:9:"iposition";N;s:11:"iattachment";N;s:4:"cols";N;}}} 

WARNUNG: Seien Sie sicher, dass Sie ein Back-up des Feldes irgendwo vor dies zu tun .. .Obwohl es noch funktioniert ... aber nur für den Fall ...

+0

Die Tatsache, dass ich nur einen Teil des Codes aus der Tabelle brachte. Ich weiß nur nicht, wie ich dieses Problem lösen soll, warum es nicht automatisch in Serialized Object konvertiert wird? – Danilkalmykov

+0

Nun, dann könntest du einfach das ganze Ding hier einfügen ... – Poiz

+0

das sind die vollständigen Daten aus der Tabelle http://pastebin.com/9cRGC0AB – Danilkalmykov

Verwandte Themen