2010-08-13 3 views
2

juste essayer d'ajouter un paramètre pour l'administrateur dans une entrée de base de données.Le tableau est-il stocké sous forme de chaîne dans le tableau?

J'ai enregistré;

array('aviva'=>'aviva','teacher'=>'teacher'); 

dans le champ 'fullPara' mais ne peut pas sembler le réintégrer dans un tableau? Juste crache comme une ficelle et j'ai essayé eval mais je ne sais pas où aller à partir d'ici?

echo $userTypes['fullPara']; // spits out array('aviva'=>'aviva','teacher'=>'teacher'); 

tous les pointeurs sont les bienvenus!

meilleur, Dan

Répondre

9

Vous voulez regarder dans les serialize() et unserialize() fonctions offres PHP.

Voici un exemple:

$array = array('1', '3', '4'); 
$s_array = serialize($array); 
// insert that into the db. 


// later on when fetching. 
$array = unserialize($array_from_db); 
print_r($array); // viola 

EDIT

Je ne recommande pas cela, mais voici comment vous le convertir en un tableau en utilisant eval:

eval("\$array = " . $data_from_Db); 
print_r($array); 

Si vous obtenez ce que vous étiez après.

+0

Probablement le moyen le plus infaillible de * stocker * un tableau. C'est à peine lisible par l'homme, alors laissez PHP s'occuper de l'éditer (c'est-à-dire: N'essayez pas de "réparer" quelque chose avec phpMyAdmin). – cHao

+0

hey premiso - le problème est que les chaînes du tableau existent déjà en tant que tableau ('aviva' => 'aviva', 'teacher' => 'teacher'); Fondamentalement, nous allons ajouter les tapant dans phpmyadmin, seqlpro etc – v3nt

+1

@daniel: Ewwww. A propos de la seule façon qui sera facilement récupérable car un tableau utilise 'eval' - et vous vous ouvrez à toutes sortes de conneries. – cHao

3

Si vous avez déjà une chaîne de "array ('aviva' => 'aviva', 'teacher' => 'teacher');" et que vous souhaitez le transformer en tableau, cela devrait fonctionner ...

$str = "array('aviva'=>'aviva','teacher'=>'teacher');"; 
eval("\$foo = $str"); 
var_dump($foo); 

Ce n'est vraiment pas la meilleure façon de le faire.

+0

acclame les saccades - ça marche. Je me demandais juste pourquoi ce n'est pas la meilleure façon? C'est juste que tous les tableaux existent déjà en tant que chaînes dans la base de données, cela prendrait un peu de temps pour construire un admin qui indexe sur l'insertion ... – v3nt

+0

Comme ils existent déjà en tant que chaînes, il n'y a vraiment pas un bon moyen de contourner. Mais c'est un risque de sécurité énorme qui s'exécute sur votre serveur. Je suppose que cela est restreint si vous n'autorisez jamais l'accès en écriture à votre base de données à partir de votre application. Dans le futur si vous souhaitez stocker un tableau dans une base de données, je recommande fortement d'utiliser la sérialisation comme mentionné par premiso. –

+0

super - merci à tous! – v3nt

Questions connexes