Stockage de tableaux dans MySQL : une approche alternative
La question de savoir comment enregistrer un tableau de données dans un seul champ MySQL a longtemps été perplexe développeurs. Bien que serialize() et unserialize() puissent offrir une solution, ils sacrifient la possibilité d'interrogation.
Examen des données relationnelles
La meilleure approche pour stocker des tableaux dans MySQL consiste à examiner les données relationnelles et en modifiant le schéma en conséquence. Au lieu d'essayer de regrouper un tableau dans un seul champ, envisagez de créer une table pouvant accueillir le contenu du tableau.
Exemple de structure de table
Par exemple, disons que nous avoir un tableau de tableaux imbriqués :
$a = array( 1 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), 2 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), );
Dans ce cas, nous créerions une table comme ceci :
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) );
Insérer et récupérer des enregistrements
Pour stocker le tableau dans la table, nous pouvons utiliser une requête d'insertion :
foreach ($t as $k => $v) { $query = "INSERT INTO test (id," . implode(',', array_keys($v)) . ") VALUES ($k," . implode(',', $v) . ")"; $r = mysql_query($query,$c); }
Pour récupérer les enregistrements, nous pouvons utiliser une requête de sélection :
function getTest() { $ret = array(); $c = connect(); $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; }
Cette approche permet une interrogation et une manipulation faciles des données du tableau dans la base de 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!