[MySQL] rechercher une valeur dans un champ sérialisé

WRInaute accro
Bonjour,

une demande pour les pros du MySQL ^^

J'ai dans la table postmeta de Wordpress un champs dont la valeur est sérialisée . Par exemple ça donne ça :
a:3:{i:0;s:4:"1436";i:1;s:4:"2827";i:2;s:4:"0205";}

Je voudrais faire une recherche et sortir tous les champs qui ont la valeur 1436
En php, super simple, in_array
en Mysql l'opérateur IN devrait marcher aussi, sauf que non, pas de bol, il ne comprend pas que c'est une array

J'ai bien sûr la solution de bourrin, qui est de sélectionner tous les champs, et de passer rang après rang avec un foreach, et un maybe_unserialize (une fonction de WP). Dans le cas présent, ça ne serait pas dramatique, car je vais avoir une trentaine d'enregistrements au maximum.

Néanmoins, je peux avoir besoin d'utiliser le même mécanisme avec beaucoup plus d'enregistrements, et là j'ai un peu peur pour la performance.

J'ai trouvé ça http://lists.mysql.com/mysql/190196 qui décrit parfaitement mon problème, et qui renvoie vers ça http://dev.mysql.com/doc/refman/5.5/en/any-in-some-subqueries.html en suggérant de créer une table temporaire avec le contenu de l'array, et d'utiliser ensuite IN
c'est juste sur l'opération "créer une table temporaire" que je coince complètement... :mrgreen:

(on me l'a toujours dit, je ne sais pas coder)
 
WRInaute accro
Règle de base : ne pas rajouter des tables pour des prunes, la table meta est faite pour ça ^^
Règle de base numéro deux : quand WP sérialise des trucs dans le core, ne pas changer le core, et ne pas doublonner les données

Donc ... je vais regarder les pistes que tu m'as données ^^
 
WRInaute accro
Sur le fonds je suis parfaitement d'accord avec toi. Ce qui m'a permis de comprendre d'ailleurs pourquoi certaines fonctions n'étaient pas intégrées dans WordPress maintenant :D
Et aussi que je cherchais midi à 14h (au moins..) in simple like suffisait en fait.

Rah la la le nez dans le guidon
 
Discussions similaires
Haut