2012-11-14 116 views
1

**嗨。這是我的結構:將多個(fk)數據插入兩個phpMyAdmin表中的一個

我在phpMyAdmin 2個表:

  • 類(的classid(PK),類名)
  • 學生(studentid(PK)的classid(FK),studentName) 1 form.php的1 form_post.php

我在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> 

它是在其登記類和學生的一種形式。 在phMyAdmin學生表中,有一個studentid(pk)的字段/列,classid(fk)的字段/列,studentName的字段/列,而我從朋友處獲得的這個代碼獲得了3個學生姓名字段。如何使用相同的類外鍵將3名學生姓名插入到phpMyAdmin學生表的studentName列中? 紅色的字是令人困惑的。 我還是個初學者,我試了一整晚纔得到這份工作。但是,我仍然堅持。 謝謝:)

回答

1

您可以使用插入多行取決於如果要插入相同的數據在同一個表

總是好的,逃避自己的價值觀

$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); 

建議:

1.學習防止MySQL注入:Good Link

2.不推薦使用MySQL擴展來編寫新代碼。相反,應該使用mysqli或PDO_MySQL擴展。更多閱讀:PHP Manual

二解決方案:

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

它的工作。感謝你的回答。真的很感激:D – user1822825

+0

我想知道,如果$ studentname2是空的呢? 。它會在表格中插入值'no'嗎?我如何擺脫這一點?謝謝:D – user1822825

+0

然後,你需要寫三個單獨的插入查詢,並檢查是否存在值,然後查詢否則使用'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

哎呀,我試圖編輯自己的帖子,我想我試圖通過事故編輯你的。嘆息 – keyboardSmasher