2011-07-21 4 views
2

Je veux insérer des données à partir d'un tableau multidimensionnel dans mysql mais en bouclant la boucle plus que nécessaire. Je veux dire que je veux entrer 6 disques mais j'ai eu beaucoup de disques. Je savais que j'avais un problème avec mon emplacement de requête mysql mais j'ai essayé beaucoup de techniques mais toutes dans le vide. c'est mon code s'il vous plaît aidez-moiinsertion d'un tableau multidimensionnel dans mysql

<?php 
$primary = array(
    "array 1"=> array("clas" => "val 1","pupil" => "val 2","subject" => "val 3"), 
    "array 2 "=> array("clas" => "val 1","pupil" => "val 2","subject" => "val 3"), 
    "array 3" => array("clas" => "val 1","pupil" => "val 2","subject" => "val 3"), 
    "array 4" => array("clas" => "val 1","pupil" => "val 2","subject" => "val 3"), 
    "array 5" => array("clas" => "val 1","pupil" => "val 2","subject" => "val 3"), 
    "array 6" => array("clas" => "val 1","pupil" => "val 2","subject" => "val 3"), 
); 
foreach($primary as $t => $value){ 
    $class =$t; 
    $clas = $primary[$t]["clas"]; 
    $pupil = $primary[$t]["pupil"]; 
    $sub =$primary[$t]["subject"]; 
    mysql_query("insert into tablename(f1, f2, f3) values('$clas','$pupil','$sub')"); 
} 
+0

Cela n'insérerait jamais que 6 enregistrements ... mais si vous ne supprimez pas les insertions effectuées par les tests précédents du script, vous continuerez à ajouter 6 enregistrements à chaque fois. –

+0

_ "Je veux qu'il entre dans 6 enregistrements mais j'ai eu beaucoup d'enregistrements" _ sent comme vous devez définir une clé unique pour vos données, ou créer un index unique sur l'ensemble ... – Wrikken

+0

merci mais je ne sais pas comment je vais définir la clé unique parce que je suis nouveau pour PHP et la programmation. –

Répondre

2

Vous pouvez essayer les sérialisation et les stocker comme blob. La sérialisation les transformerait en un tableau géant d'octets que vous pourriez récupérer et désérialiser.

+1

Sauf si vous ne demandez pas les données, jamais, c'est à propos de la pire solution que je pourrais trouver. Combien de lignes et de champs cette table aura-t-elle? 1 et 1? Que faire si je ne veux que ces enregistrements avec une valeur d'élève spécifique? Je dois les sortir tous du blob et les boucler tous avec un script? – Wrikken

+0

Oh c'est horrible, je sais. Je dis juste que ce serait cool si ça marchait. Vous devriez vraiment avoir un identifiant liant à une table séparée pour un tableau de taille variable comme ceci. Même une table avec une quantité statique de colonnes et laissez juste celles que vous n'utilisez pas vides serait mieux que ce que j'ai suggéré. Mais il a posé cette question et j'ai donné la réponse la plus simple possible. – Heckman

+0

S'il vous plaît ne donnez ce genre de conseils après avoir établi avec 100% de certitude que je ne dois jamais travailler avec les gens qui le prennent, ou jamais avoir à voir leur code ... Ça fait presque mal physiquement ... – Wrikken

0

Sérialiser le tableau n'est pas réellement la plus mauvaise idée si vous n'avez pas besoin de rechercher les données. Une autre option consiste à choisir une autre structure de données pour les données, par exemple un arbre binaire et un objet. L'objet que vous pouvez sérialiser et désérialiser et parce que c'est un arbre binaire, vous pouvez le rechercher très rapidement dans la mémoire. C'est une chose que je pense à moi-même.

+0

Si vous n'avez pas besoin de les rechercher pourquoi utiliser une base de données à tous? Enregistrez les données dans un fichier. –

+0

ypercube: Parce que je peux et aussi je veux utiliser un arbre binaire pour stocker et rechercher les données. Je n'ai jamais utilisé une telle structure de données auparavant et si ce n'est pas des centaines de mégaoctets, je peux aussi être très efficace. – Bytemain

+0

Je ne comprends vraiment pas votre point de vue. Voulez-vous rechercher/interroger les données ou non? Proposez-vous d'utiliser la base de données pour cela ou un arbre binaire personnalisé en mémoire? –