Récupérer des enregistrements basés sur des éléments de tableau sérialisés dans MySQL
Le stockage de données dans un tableau sérialisé au sein d'un champ de base de données est pratique, mais cela pose des défis lors de la tentative de récupération d'enregistrements basés sur des éléments de tableau spécifiques. La syntaxe SQL conventionnelle ne permet pas de filtrer directement les éléments du tableau.
Solution : utiliser des clauses LIKE
Comme suggéré par les commentateurs, il est optimal d'envisager des méthodes alternatives de stockage de données. Cependant, si des changements immédiats ne sont pas réalisables, vous pouvez exploiter le fait que les tableaux sérialisés sont essentiellement des chaînes. En examinant le format de sérialisation PHP (avec ses indicateurs numériques de longueur), vous pouvez créer une clause LIKE pour localiser les enregistrements correspondants.
Exemple :
Considérez l'exemple suivant :
select * from table WHERE serialized_array LIKE '%s:1:"n";s:1:"$n";%'
Dans cet exemple, nous ciblons les enregistrements où la valeur du tableau correspondant à la clé "n" est "$n". Cependant, il est important de noter que cette approche a des limites :
Conclusion :
Bien que l'utilisation de clauses LIKE puisse répondre aux exigences de requête immédiates, elle souligne la nécessité d'envisager des approches alternatives de stockage de données qui activer les requêtes structurées pour améliorer les performances et la maintenabilité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!