Bonjour,
j'ai un problème sur lequel je bug depuis un petit moment maintenant à cause d'un passage de tableau sérializé en php vers un tableau en perl...
En fait le problème est le suivant :
J'ai des données dans un tableau serializé dans une base mysql (ceci est fait sans problème). La partie gestion des tableaux en PHP ne me cause pas de problème.
J'enregistre un tableau serializé contenant des identifiants d'une table comme cela dans un champs de type blob : Array ( [1] => 6 [2] => 3 )
Via un script perl j'essaye de récupérer ce tableau serializé et vérifier si un ID y est présent.
Voici la méthode perl par laquelle j'essaye d'arriver à mes fins :
Malheureusement, j'arrive pas à manipuler $hashref ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 use PHP::Serialization qw(serialize unserialize); my $encoded = serialize({ a => 1, b => 2}); my $hashref = unserialize($encoded);
Chose vraiment étrange, lorsque je modifie les valeurs de ce tableau sérialisé via ma page PHP/mysql, je n'ai des fois pas le même résultat dans $m3...
Des fois un ARRAY, des fois un HASH...
J'ai quand même pensé à regarder les doc perl pour utiliser des tableaux en perl !! (Avant de me faire le rappel à l'ordre :-)
-> La partie sql fonctionne, il s'agit juste de la fonction unserialize sur laquelle je coince.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 my $id='3'; my $sql; my $result; $sql = "SELECT tab_module AS m FROM matable WHERE en_cours=1"; $result = $dbh->prepare($sql) or die "Echec Requete $sql : $DBI::errstr"; $result->execute(); $result->bind_columns(undef, \my $m); $result->fetch(); my $m3 = unserialize($m); print \$m3.'|'; if ( "\$m3" =~ /$id/) { print "OK\n"; } else { print "NOK\n"; }
Et/ou si vous avez une autre méthode, je suis preneur...
Partager