2010-10-09 9 views
0

Je voudrais stocker le tableau suivant dans un champ de texte unique dans une table mySQL:PHP à deux dimensions Tableau Associatif implosent

$user_rating[0] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 1', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

$user_rating[1] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 2', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

$user_rating[2] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 3', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

$user_rating[3] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 4', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

$user_rating[4] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 5', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

$user_rating[5] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 6', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

$user_rating[6] = array('percent' => 'XXXXXXXXXXXXXXXXX', 
        'category' => 'Category 7', 
        'description' => 'XXXXXXXXXXXXXXXXX', 
        'link' => 'XXXXXXXXXXXXXXXXX', 
        'thumbnail' => 'XXXXXXXXXXXXXXXXX'); 

je crois que je dois faire imploser les tableaux associatifs et d'y arriver mais j'ai quelques problèmes. Toutes les autres solutions de structure de réseau sont également les bienvenues.

Merci

Répondre

0

Avez-vous envisagé JSON? Il pourrait être votre meilleur pari si vous voulez coller à un seul champ.

PHP - JavaScript Object Notation

modifier: Ou mieux encore, lire (et voter) pour le commentaire ci-dessous, parce que serialize est une fonction native.

+1

+1 pour suggérer la sérialisation. Cependant, natif ['serialize'] (http://php.net/manual/en/function.serialize.php) serait meilleur dans la plupart des cas. – lonesomeday

+0

+1 pour me rappeler qu'il y a une telle fonction. Longtemps pas de PHP :) – methode

1

Vous pouvez utiliser le code serialize de PHP pour convertir le tableau en une seule chaîne. Lorsque vous l'extrayez de la base de données, vous pouvez utiliser unserialize pour le reconvertir en tableau.

0

Il y a une meilleure solution à coup sûr.
Stockez ces données sous la forme d'enregistrements distincts dans une table dédiée.
C'est ce à quoi servent les bases de données relationnelles.

2

D'abord, vous n'avez pas besoin de spécifier les touches numériques commandées, il suffit d'écrire:

$user_rating[] = array(); 

Deuxièmement, pourquoi voudriez-vous stocker tout le tableau comme une chaîne? Pourquoi ne pas simplement stocker chacun de ses champs en tant que colonne? Est-ce pas une option? Troisièmement, vous pouvez stocker des tableaux sérialisés (ou n'importe quelles données, d'ailleurs) dans la BD.

serialize($user_rating); 
store_to_db(); 
... 
$handler = unserialize(get_data_out()); 

Si vous voulez le stocker comme une chaîne droite, cependant, c'est un peu plus compliqué. Vous devez parcourir le tableau et ajouter les clés et les valeurs individuellement.

+0

Merci. J'ai effectivement essayé de le stocker en tant que données sérialisées, mais recevez le message d'erreur suivant: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser le temps de près pour commencer le processus de domination de votre marché. Ne vous contentez pas de la ligne 1 Voici le code: $ serialized_user_rating = serialize ($ user_rating); $ q = "INSERT INTO marketing_roadmap (nom d'utilisateur, feuille de route) VALUES ('$ user_name', '$ serialized_user_rating')"; mysql_query ($ q) ou die (mysql_error()); –

+0

Je ne prévois pas de stocker toutes les données dans la table car elle est statique (identique pour chaque utilisateur). Fondamentalement, j'ai juste besoin de stocker/enregistrer l'ORDRE des catégories pour chaque utilisateur. –

+0

@Kenny ne savez-vous pas que les chaînes doivent être échappées dans la requête? –

Questions connexes