Maison >base de données >tutoriel mysql >Comment puis-je stocker et interroger efficacement les données d'un tableau dans MySQL ?

Comment puis-je stocker et interroger efficacement les données d'un tableau dans MySQL ?

DDD
DDDoriginal
2024-11-29 01:04:111081parcourir

How Can I Efficiently Store and Query Array Data in MySQL?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn