2010-07-27 9 views
2

Je souhaite stocker un tableau associatif contenant principalement des chaînes et des entiers en tant que valeurs dans db.Stockage d'un tableau associatif dans une base de données MySQL

Je pensais:

  • imploser/exploser - besoin de trouver delimiter, qui ne sera pas dans les valeurs - car il est presque généré par l'utilisateur, pas sûr
  • XML - sent lourd pour le travail (création/lecture des valeurs)
  • JSON - si je dois seulement travailler avec json_decode/json_encode, semble parfaite

Qu'en pensez-vous?

S'il vous plaît, ne me communiquent pas à d'autres questions comme celle-ci sur, je l'ai lu la plupart d'entre eux et je ne suis toujours pas sûr :)

Répondre

7
+1

Peut-être l'une des meilleures solutions, même si JSON stockera moins de données, je suppose. Jetez un coup d'oeil ici aussi: http://www.php.net/manual/fr/fonction.json-encode.php –

+0

Une bonne ressource SO de toute façon: http://stackoverflow.com/questions/804045/preferred- méthode-à-stocker-php-arrays-json-encoder-vs-sérialiser/804053 # 804053 –

+0

Ne pas avoir de problèmes de sérialisation avec UTF? –

2

Il vraiment Tout dépend de la façon dont vous voulez récupérer ces données une fois que vous l'obtenez dans la base de données. Bien sûr, vous pouvez sérialiser un tableau et le mettre dans votre champ, mais que faire si vous voulez effectuer des requêtes avec les données de ce tableau; vous devez sortir le tableau sérialisé, effectuer des fonctions PHP, puis faire votre requête.

Vous devez expliquer ce que vous voulez obtenir avec ces données de tableau associatif.

+0

principalement des métadonnées pour le contenu: diverses directives comment le montrer, l'auteur, la date et d'autres informations que je n'ai pas besoin de fullsearch sur. –

1

Vous pouvez soit serialize() le tableau, soit json_encode() lors de l'écriture dans la base de données, et json_decode() lors de l'extraction à partir de la base de données.

1

Vous pouvez également créer une table avec les colonnes key et value et stocker chaque élément de tableau individuellement dans cette table. Cela peut sembler excessif, mais pourrait s'avérer utile en fonction de ce que vous voulez faire avec les données

+0

Je ne veux pas faire cela, parce que chaque nouvelle version du contenu enregistre comme "page" différente dans db, et si chaque page a 10 + paires, faire diff ou d'autres opérations sur le contenu avec plus de résultats de résultats ... mess ou bazillion db opérations. –