Maison > Article > développement back-end > Comment stocker et récupérer efficacement un tableau PHP dans un champ MySQL ?
Stockage et récupération de tableaux PHP dans MySQL
Question :
Comment pouvez-vous stocker et récupérer efficacement un tableau de données dans un seul champ MySQL ?
Réponse :
Stockage des données du tableau :
Stockage d'un tableau dans un seul champ MySQL n’est pas conseillé, car cela compromet l’intégrité des données relationnelles. Il est recommandé d'ajuster votre schéma pour s'adapter aux données du tableau.
Utilisation de la sérialisation et de la désérialisation :
Si vous devez stocker le tableau dans un seul champ, vous pouvez utiliser les fonctions serialize() et unserialize(). Cependant, cette approche limite votre capacité à effectuer des requêtes directes sur le tableau stocké.
Encodage et décodage JSON :
Vous pouvez également envisager d'utiliser json_encode() et json_decode () pour stocker et récupérer les données du tableau. Cette méthode permet d'enregistrer les données au format JSON dans un champ de texte et de les reconvertir au format tableau.
Exemple de modification de schéma relationnel :
Considérez ce qui suit array :
$a = [ 1 => ['a' => 1, 'b' => 2, 'c' => 3], 2 => ['a' => 1, 'b' => 2, 'c' => 3], ];
Pour enregistrer ce tableau dans une base de données relationnelle, vous pouvez créer une table avec la structure suivante :
CREATE TABLE test ( id INTEGER UNSIGNED NOT NULL, a INTEGER UNSIGNED NOT NULL, b INTEGER UNSIGNED NOT NULL, c INTEGER UNSIGNED NOT NULL, PRIMARY KEY (id) );
Exemple de sérialisation et de désérialisation :
<code class="php">function saveArray($array) { $serializedArray = serialize($array); $query = "INSERT INTO test_table (data) VALUES ('$serializedArray')"; // Execute the query and save the array } function getArray() { $query = "SELECT data FROM test_table"; // Execute the query $serializedArray = mysql_fetch_row($result)[0]; $unserializedArray = unserialize($serializedArray); return $unserializedArray; }</code>
Exemple d'encodage et de décodage JSON :
<code class="php">function saveArrayJSON($array) { $jsonEncodedArray = json_encode($array); $query = "INSERT INTO test_table (data) VALUES ('$jsonEncodedArray')"; // Execute the query and save the array } function getArrayJSON() { $query = "SELECT data FROM test_table"; // Execute the query $jsonEncodedArray = mysql_fetch_row($result)[0]; $decodedArray = json_decode($jsonEncodedArray, true); return $decodedArray; }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!