2011-09-05 9 views
1

Je suis à la recherche de conseils.insérer tableau php dans mySql

J'ai un champ de formulaire de données que j'insère dans une table et cherche à associer les données avec les identifiants d'autres données pertinentes. Je me demandais s'il y avait une façon recommandée d'insérer un tableau d'identifiants pertinents par rapport à l'information dont je parle aussi.

est inférieur à ce Im pensant ...

Par exemple. php lit

<?php 
$name = $_POST['name']; 
$info = $_POST['information']; 
$id = $_POST['id']; 
$family = array(); 
?> 
<?php 

$select = "SELECT * 
       FROM `names_family` 
       WHERE `name` LIKE '$name' 
       LIMIT 0 , 30"; 

$selected = mysql_query($select, $connection); 
if(!$selected){ 
die("Hal 9000 says: Dave the select family name ID query failed " . mysql_error());} 


while($row = mysql_fetch_array($selected)){ 
     $familyId = $row[0]; 
     $familyName = $row[1]; 

array_push($family, $familyName => $familyId);    

} 

$insertInfo = "INSERT INTO `family_info`.`info` 
      (`name`, `info`, `family`) 
      VALUES (
      '$name', '$info', '$family');"; 

$insertedInfo = mysql_query($insertInfo, $connection); 
if(!$insertedInfo){ 
die("Hal 9000 says: Dave the insert info query failed " . mysql_error());} 
?> 

Est-ce une façon recommandée d'associer des informations? Ou est une autre façon d'atteindre le même résultat?

+0

Si tout va bien your'e vos entrées dans désinfectante le code de production. ce code crie juste l'injection de SQL. – canadiancreed

+0

bien sûr !!! :) – Christopher

Répondre

1

il y a une autre façon

 $family=array() 
    while($row = mysql_fetch_array($selected)){ 
      $familyId = $row[0]; 
      $familyName = $row[1]; 

     $family[]=$familyName.$familyId;    

    } 

$insertInfo = "INSERT INTO `family_info`.`info` 
      (`name`, `info`, `family`) 
      VALUES (
      '$name', '$info', '$family');"; 
+0

Merci Roshan - quel type de champ la colonne de famille dans ma base de données devrait-elle être VarChar? – Christopher

+0

oui ce serait varchar gud chance –

2

Quel type de données est la colonne "famille" dans MySQL? Je suis assez sûr que vous ne pouvez pas directement insérer des tableaux php comme ça dans MySQL. Si c'est possible, devinez que c'est une de ces choses que je ne connaissais pas parce que je n'ai même jamais essayé. La méthode la plus simple consiste à encoder votre tableau php dans une chaîne JSON et à la décoder dans un tableau php lorsque vous l'avez lu. Où la colonne de la famille doit être de type varchar ou text en fonction de la longueur du tableau de famille. Une méthode plus robuste consiste à créer une table séparée pour stocker vos données de famille et utiliser une instruction MySQL JOIN pour obtenir les valeurs associées à une entrée dans la table family_info.

quelques informations ici rejoint

Joining two tables without returning unwanted row

http://dev.mysql.com/doc/refman/5.0/en/join.html