Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Problem z odserializowaniem danych
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Głowię się nad drobną rzeczą ale mam problem. Przesyłam metodą post zserializowaną tablicę a pod przepuszczeniu przez unserialize() otrzymuje ją w całej okazałości. W tablicy tej znajdują się dane pobrane z bazy.

serializacja: serialize($aRole)
odserializowanie: unserialize(stripslashes($_POST['aRoleToken']))


Wszystko działa pięknie do póki w bazie przechowuje zwykłe teksty. Natomiast jeśli do bazy wprowadzę np taki ciąg:

  1. INSERT INTO roles VALUES (NULL, 'ChangeLogView', 'Przeglądanie changelog'a');


to przy próbie unserializacji otrzymuję błąd spowodowany obecnością tego apostrofa przed literką a.

Pewnie banalny problem ale jakoś nie mogę nic wymyśleć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
rasgan
post
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 30.05.2007
Skąd: Kleszczów

Ostrzeżenie: (0%)
-----


przed wpisaniem do bazy użyj funkcji dodania stripslashes a przy wyciąganiu z bazy usuń znaczki \. W ten sposób będziesz mógł używać znaków ' oraz " przy zapisie do bazy.
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Próbowałem - nie pomaga
Go to the top of the page
+Quote Post
rasgan
post
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 30.05.2007
Skąd: Kleszczów

Ostrzeżenie: (0%)
-----


a tak?

Kod
$a = array( null , "ChangeLogView" , "Przeglądanie changelog'a" );
$a = addslashes ( $a[2] );
INSERT INTO roles VALUES ( $a );


Jeśli to nie pomoże to może zastąp znak ' odpowiednikiem &costam - nie pamietam kodu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:26