Bonne pratique : stockage de données relationnelles et gestion des tableaux PHP
Le stockage d'un tableau dans un seul champ MySQL n'est généralement pas recommandé. Au lieu de cela, il est conseillé d'analyser votre modèle de données et de le restructurer en conséquence. Cependant, si vous devez stocker un tableau dans un seul champ, envisagez les options suivantes :
Sérialisation et désérialisation :
Utilisation de PHP serialize() et unserialize() les fonctions peuvent convertir un tableau en chaîne, qui peut ensuite être stockée dans le champ MySQL. Cependant, vous ne pourrez pas effectuer de requêtes sur le contenu spécifique du tableau.
Encodage et décodage JSON :
Vous pouvez également utiliser json_encode() et les fonctions json_decode(). Ces fonctions offrent une approche plus moderne et structurée de la sérialisation et de la désérialisation des données.
Considérez le tableau suivant :
$a = array( 1 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), 2 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), );
Pour un stockage et une manipulation optimaux de la base de données, vous devez restructurer votre modèle de données. Créez un tableau avec des colonnes séparées pour chaque paire clé-valeur du tableau, par exemple :
DROP TABLE IF EXISTS test; 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) );
Vous pouvez utiliser les fonctions PHP pour interagir avec la base de données :
// Connect to the database $c = mysql_connect($server, $username, $password); mysql_select_db('test'); // Example functions to interact with the database function getTest() { $ret = array(); $query = 'SELECT * FROM test'; $r = mysql_query($query,$c); while ($o = mysql_fetch_array($r,MYSQL_ASSOC)) { $ret[array_shift($o)] = $o; } mysql_close($c); return $ret; } function putTest($t) { foreach ($t as $k => $v) { $query = "INSERT INTO test (id,". implode(',',array_keys($v)). ") VALUES ($k,". implode(',',$v). ")"; $r = mysql_query($query,$c); } mysql_close($c); } // Insert the array into the database putTest($a); // Retrieve the data from the database $b = getTest();
En adoptant un modèle de données relationnelles, vous pouvez garantir un stockage, une interrogation et une manipulation efficaces de vos données.
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!