Enregistrez tableau PHP MySQL?
Ce qui est un bon moyen d'économiser un tableau de données à un seul champ mysql?
Aussi une fois j'ai une requête pour ce tableau dans la table mysql, ce qui est un bon moyen d'obtenir de nouveau dans la matrice de la forme?
Est serialize et unserialize la réponse?
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de bonne façon de stocker un tableau dans un seul champ.
Vous devez examiner vos données relationnelles et apporter les modifications appropriées à votre schéma. Voir l'exemple ci-dessous pour référence à cette approche.
Si vous doit enregistrer le tableau dans un seul champ, alors le
serialize()
etunserialize()
fonctions fera l'affaire. Mais vous ne pouvez pas effectuer des requêtes sur le contenu réel.Comme une alternative à la sérialisation de fonction il y a aussi
json_encode()
etjson_decode()
.Considérons le tableau suivant
Pour l'enregistrer dans la base de données, vous devez créer un tableau comme celui
De travailler avec les enregistrements que vous pouvez exécuter des requêtes telles que la ces (et oui c'est un exemple, méfiez-vous!)
La
connect()
fonction retourne une ressource de connexion mysqlOui, en général, serialize et unserialize sont la voie à suivre.
Si vos données est quelque chose de simple, bien que, de l'enregistrement comme une chaîne délimitée par des virgules serait sans doute mieux pour l'espace de stockage. Si vous savez que votre tableau sera juste une liste de nombres, par exemple, alors vous devriez utiliser implosion/explosion. C'est la différence entre
1,2,3
eta:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
.Si non, alors serialize et unserialize de travail pour tous les cas.
Serialize/Unserialize tableau pour le stockage dans une base de
Visite http://php.net/manual/en/function.serialize.php
Du Manuel PHP:
Regardez sous la rubrique "Retour" sur la page
Renvoie une chaîne contenant un octet-stream représentation de la valeur qui peut être stocké n'importe où.
Noter que ceci est une chaîne binaire qui peut inclure des octets nuls, et doit être stockées et traitées comme telles. Par exemple, la fonction serialize() la sortie doit généralement être stockées dans un champ BLOB dans une base de données, plutôt que d'un CHAR ou un champ de TEXTE.
Remarque: Si vous souhaitez stocker html dans un blob, assurez-vous de l'encoder en base64 ou il pourrait se briser, la fonction serialize.
Exemple de codage:
$YourSerializedData
est maintenant prêt à être stocké dans le blob.Après l'obtention de données de blob, vous devez base64_decode puis unserialize
Exemple de décodage:
Suffit d'utiliser la sérialisation fonction PHP:
Toutefois, si vous utilisez des tableaux simples comme ce que vous pourriez aussi bien utiliser d'implosion et d'explosion.Utiliser un tableau vide à la place de la nouvelle.
La meilleure façon que j'ai trouvé pour me sauver de la matrice de données chaîne de caractères avec des caractères de séparation
Vous pouvez ensuite rechercher les données, stockées dans votre tableau avec un simple requête
utiliser explode() de la fonction de conversion "array_data" chaîne de tableau
noter que ce n'est pas de travailler avec les tableaux multidimensionnels et assurez-vous que votre "array_separator" est unique et n'avait pas exister dans la gamme des valeurs.
Être prudent !!! si vous ne pourrez prendre un formulaire de données et les mettre dans la base de données, vous serez dans le piège, becous les données du formulaire n'est pas SQL-sûr ! vous devez gérer votre formulaire de valeur
avec mysql_real_escape_string ou si vous utiliser MySQLi mysqli::real_escape_string
ou si la valeur sont des entiers ou des booléens cast (int) (booléenne) sur leur
Serialize et unserialize sont assez commun pour que. Vous pouvez également utiliser JSON via json_encode et json_decode pour un peu de PHP-format spécifique.
Comme mentionné avant - Si vous n'avez pas besoin de rechercher des données dans le tableau, vous pouvez utiliser serialize - mais c'est "php seulement". Donc, je vous recommande d'utiliser la fonction json_decode /json_encode - non seulement pour les performances, mais aussi pour des raisons de lisibilité et de la portabilité (d'autres langages tels que javascript peut gérer json_encoded de données).
Heu, je ne sais pas pourquoi tout le monde suggère la sérialisation de la matrice.
- Je dire, la meilleure façon est de les adapter dans votre schéma de base de données. Je n'ai aucune idée (et vous a pas donné d'indices) à propos de la signification sémantique des données dans votre tableau, mais il y a généralement deux façons de stocker des séquences comme ça
De cette façon, vous êtes le stockage de votre tableau dans une seule ligne.
L'inconvénient de la première méthode est, bien évidemment, que si vous avez de nombreux éléments de votre tableau, de travail avec cette table ne sera pas la plus élégante chose. Il est également impossible de le possible, mais assez peu élégante ainsi tout à fait les colonnes nullable) à travailler avec des séquences de longueur variable.
Pour la deuxième méthode, vous pouvez obtenir des séquences de longueur quelconque, mais d'un seul type. Vous pouvez, bien entendu, qu'un type varchar ou quelque chose et de sérialiser les éléments de votre tableau. Pas la meilleure chose à faire, mais certainement mieux que la sérialisation de l'ensemble du tableau, à droite?
De toute façon, aucune de ces méthodes est clair avantage d'être en mesure d'accéder à l'arbitraire d'un élément de la séquence et vous n'avez pas à vous soucier de la sérialisation de tableaux et de vilaines choses comme ça.
Comme pour le récupérer. Eh bien, obtenir la rangée/de la séquence de lignes avec une requête et, ainsi, utiliser un boucle.. droit?
Vous pouvez enregistrer votre tableau json.
il existe des documents json type de données: https://dev.mysql.com/doc/refman/5.7/en/json.html
Je pense que c'est la meilleure solution, et vous aidera à maintenir votre code plus lisible en évitant fou fonctions.
J'espère que cela est utile pour vous.
Yup, serialize/unserialize est ce que j'ai vu la plupart dans de nombreux projets open source.
Je conseille d'implosion/explosion avec un personnage que vous connaissez ne sera pas contenue dans l'un quelconque des éléments de tableau. Puis le stocker dans SQL comme une chaîne de caractères.
découvrez l'implosion de la fonction, puisque les valeurs sont dans un tableau, vous voulez mettre les valeurs de l'array dans une requête mysql qui insère les valeurs dans un tableau.
Si les valeurs dans le tableau sont les valeurs de texte, vous aurez besoin d'ajouter des guillemets
Aussi, si vous ne voulez pas les valeurs en double, basculer le "En" à "IGNORER" et uniquement les valeurs uniques seront insérées dans la table.
vous pouvez insérer un objet sérialisé ( array ) de mysql , par exemple
serialize($object)
et vous pouvez unserize objet exempleunserialize($object)
Au lieu de l'enregistrer dans la base de données, l'enregistrer dans un fichier et ensuite l'appeler plus tard.
Ce que beaucoup d'applis php comme sugarcrm) est de seulement utiliser var_export à l'écho de toutes les données du tableau dans un fichier.
C'est ce que j'utilise pour enregistrer mes configurations de données:
Je pense que c'est une meilleure façon de sauvegarder vos données!