Je souhaite enregistrer des informations supplémentaires avant d’envoyer le total de la commande à Paypal. Pour chaque élément, j'ai créé une seule colonne dans ma base de données MySQL où je veux la stocker. Je pensais maintenant le sauvegarder sous forme de tableau que je pourrais lire plus tard pour créer une page PHP. Les champs supplémentaires proviennent des champs du formulaire de saisie.
En utilisant un tableau, puis-je être sûr de ne pas mélanger les informations?
Vous pouvez stocker le tableau en utilisant serialize
/ unserialize
. Avec cette solution, ils ne peuvent pas être facilement utilisés à partir d'autres langages de programmation. Vous pouvez donc envisager d'utiliser json_encode
/ json_decode
(ce qui vous donne un format largement pris en charge). Évitez d'utiliser implode
/explode
pour cela car vous allez probablement vous retrouver avec des bogues ou des failles de sécurité.
Notez que cela rend votre table non normalisée, ce qui peut être une mauvaise idée car vous ne pouvez pas facilement interroger les données. Considérez donc cela attentivement avant d'aller de l'avant. Peut-être devrez-vous interroger les données à des fins statistiques ou autres? Existe-t-il d'autres raisons de normaliser les données?
En outre, n'enregistrez pas le tableau brut $_POST
. Quelqu'un peut facilement créer son propre formulaire Web et publier des données sur votre site, envoyant ainsi un formulaire très volumineux et prenant beaucoup de place. Enregistrez les champs de votre choix et assurez-vous de valider les données avant de les enregistrer (pour ne pas obtenir de valeurs invalides).
La manière dont cela est fait est avec serializing the array, ce qui signifie "en faire une chaîne". Pour mieux comprendre ceci, regardez ceci:
$array = array("my", "litte", "array", 2);
$serialized_array = serialize($array);
$unserialized_array = unserialize($serialized_array);
var_dump($serialized_array); // gives back a string, perfectly for db saving!
var_dump($unserialized_array); // gives back the array again
Pour convertir n'importe quel tableau (ou n'importe quel objet) en chaîne en utilisant PHP, appelez serialize ():
$array = array( 1, 2, 3 );
$string = serialize( $array );
echo $string;
$ string va maintenant contenir une version de chaîne du tableau. La sortie du code ci-dessus est la suivante:
a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
Pour reconvertir la chaîne en tableau, utilisez unserialize ():
// $array will contain ( 1, 2, 3 )
$array = unserialize( $string );
Utilisez la fonction PHP serialize()
pour convertir des tableaux en chaînes. Ces chaînes peuvent facilement être stockées dans la base de données MySQL. En utilisant unserialize()
, ils peuvent être reconvertis en tableaux si nécessaire.
Stockez-le dans une colonne à valeurs multiples avec un séparateur de virgule dans une table de RDBM.
<?php
$myArray = new array('1', '2');
$seralizedArray = serialize($myArray);
?>