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
Libérer: 2024-11-29 01:04:11
original
1009 Les gens l'ont consulté

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
    ),
);
Copier après la connexion

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)
);
Copier après la connexion

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);
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal