2012-11-14 3 views
1

** Hi. Ce sont mes structures:Insérer plusieurs données (fk) dans l'une des deux tables phpMyAdmin

Je suis arrivé 2 tables dans phpMyAdmin:

  • classe (classid (pk), className)
  • étudiants (StudentID (Pk), classid (fk), studentName) 1 form.php et 1 form_post.php

Je l'ai fait dans form.php **

include_once("connection.php"); 


    $className= $_POST["className"]; 
    $studentName1= $_POST["studentName1"]; 
    $studentName2= $_POST["studentName2"]; 
    $studentName3= $_POST["studentName30"]; 


    $sql = "insert into class(className) values ('$className')"; 


    mysql_query($sql); 

    $lastid=mysql_insert_id(); 


    $sql2= "INSERT INTO students (studentid, classid, studentName) 
      VALUES (' ', $lastid, '$studentName')"; 

    mysql_query($sql2); 

form_post.php:

  <tr> 
       <td width="140"><span class="order">Class Name: </span></td> 
       <td><span class="order"> 
       <input name="className" type="text" id="className" size="35" /> 
       </span></td> 
      </tr> 
      <tr> 
       <td width="132"><span class="order">Student's Name: </span></td> 
       <td><span class="order"> 
       <input type="text" name="studentName1" id="studentName1" /> 
       </span></td> 
      </tr> 
      <tr> 
       <td width="132"><span class="order">Student's Name: </span></td> 
       <td><span class="order"> 
       <input type="text" name="studentName2" id="studentName2" /> 
       </span></td> 
      </tr> 
      <tr> 
       <td width="132"><span class="order">Student's Name: </span></td> 
       <td><span class="order"> 
       <input type="text" name="studentName3" id="studentName3" /> 
       </span></td> 
      </tr> 

Il est une forme d'enregistrement de classe et les étudiants en elle. Dans la table des étudiants phMyAdmin, il y a un champ/colonne pour studentid (pk), un champ/colonne pour classid (fk), un champ/colonne pour studentName alors que ce code obtenu par mon ami a 3 champs. Comment insérer le nom de 3 étudiants dans la colonne studentName de la table student de phpMyAdmin avec la même clé étrangère de classe? Les mots de couleur rouge sont la confusion. Je suis toujours un débutant et j'ai essayé toute la nuit pour obtenir ce travail. Mais, je suis toujours coincé. Merci :)

Répondre

1

Vous pouvez utiliser insérer plusieurs lignes en fonction de si vous insérez les mêmes données dans les mêmes tables

toujours bon pour échapper à vos valeurs

$className= mysql_real_escape_string($_POST["className"])); 
$studentName1= mysql_real_escape_string($_POST["studentName1"]); 
$studentName2= mysql_real_escape_string($_POST["studentName2"]); 
$studentName3= mysql_real_escape_string($_POST["studentName3"]); 

$sql2= "INSERT INTO students (studentid, classid, studentName) 
     VALUES (' ', $lastid, '$studentName1'), 
       (' ', $lastid, '$studentName2'), 
       (' ', $lastid, '$studentName3')"; 

mysql_query($sql2); 

Recommandations:

1.Apprenez à empêcher les injections MySQL : Good Link

2. L'extension MySQL n'est pas recommandée pour l'écriture de nouveau code. Au lieu de cela, l'extension mysqli ou PDO_MySQL doit être utilisée. More reading: PHP Manual

Deuxième solution:

if(!empty($studentName1)) { 
    $sql2= "INSERT INTO students (studentid, classid, studentName) 
      VALUES (' ', $lastid, '$studentName1')"; 

    mysql_query($sql2); 
} 

if(!empty($studentName2)) { 
    $sql2= "INSERT INTO students (studentid, classid, studentName) 
      VALUES (' ', $lastid, '$studentName2')"; 
    mysql_query($sql2); 
} 

if(!empty($studentName3)) { 
    $sql2= "INSERT INTO students (studentid, classid, studentName) 
      VALUES (' ', $lastid, '$studentName3')"; 
    mysql_query($sql2); 
} 
+0

Ça marche. Merci d'avoir répondu. Vraiment apprécier: D – user1822825

+0

Je me demande, et si le $ studentname2 est vide? . Il va insérer la valeur «non» dans la table droite? Comment puis-je me débarrasser de cela? Merci: D – user1822825

+0

Ensuite, vous devez écrire trois requêtes d'insertion individuelles et vérifier si la valeur existe, puis interroger autrement ne pas utiliser l'instruction 'if' – GBD

0
$sql2= "INSERT INTO students (studentid, classid, studentName) 
     VALUES (null, $lastid, '$studentName')"; 
0
$sql2= "INSERT INTO students (studentid, classid, studentName) 
     VALUES ('', $lastid, '$studentName')"; 
+0

Oops, j'ai essayé de modifier mon poste et je pense que je tenté de modifier le vôtre par accident. soupir – keyboardSmasher

Questions connexes