2014-01-10 46 views
0

我有兩種形式插入2點形式的數據到一個表:student.html和faculty.html,我想他們的數據存儲到一個表中調用TEACHING_AWARD_NOMINATIONSCREATE標識符----使用PHP

我用同樣的PHP文件的兩個人。下面是我的代碼:

$srr = array_map('mysql_escape_string', $_REQUEST); 

if ($srr['NOMINATIONTYPE'] == 'STUDENT') 
    $fields = Array('TYPE','NAME', 'EMAIL', 'NOMINEE', 'DEPT', 'COURSE', 'YEARTERM', 'REQUIRED_FOR_MAJOR', 'MAJOR_LEARNING_OBJECTIVES', 'WHAT_EXTENT_INSTRUCTOR_HELP', 'RANK', 'RANK_COMMENT','EVIDENCE','EFFECTION','CONTRIBUTION', 'TEXTBOX_1', 'TEXTBOX_2', 'TEXTBOX_3', 'TEXTBOX_4', 'TEXTBOX_5'); 
else if ($srr['NOMINATIONTYPE'] == 'FACULTY') 
    $fields = Array('TYPE','NAME', 'EMAIL', 'NOMINEE', 'DEPT', 'COURSE', 'YEARTERM', 'REQUIRED_FOR_MAJOR', 'MAJOR_LEARNING_OBJECTIVES', 'WHAT_EXTENT_INSTRUCTOR_HELP', 'RANK', 'RANK_COMMENT','EVIDENCE','EFFECTION','CONTRIBUTION', 'TEXTBOX_1', 'TEXTBOX_2', 'TEXTBOX_3', 'TEXTBOX_4', 'TEXTBOX_5'); 
else die('error: no nomination type'); 


foreach ($fields as $f) 
    $$f = $srr[$f]; 

$qry = "INSERT INTO TEACHING_AWARD_NOMINATIONS ("; 
    foreach ($fields as $f) $qry .= $f . ", "; 
    $qry = substr($qry, 0, -2); 
    $qry .= ") VALUES ("; 
    foreach ($fields as $f) $qry .= "'" . $$f . "', "; 
    $qry = substr($qry, 0, -2); 
    $qry .= ")"; 

$result = mysql_query($qry) or die('An error ocurred: '.mysql_error()); 

echo 'Success! Thank you for submitting your nomination.'; 

它完美地將數據存儲除了在表

下面

在每個HTML代碼中的'TYPE'柱:

<input type="hidden" name="NOMINATIONTYPE" value="FACULTY" /> 
      <input type="submit" value="Submit" name="Submit" /> 
      <input type="reset" value="Reset" name="Reset" /> 


<input type="hidden" name="NOMINATIONTYPE" value="STUDENT" /> 
      <input type="submit" value="Submit" name="Submit" /> 
      <input type="reset" value="Reset" name="Reset" /> 

我怎樣才能創建一個標識符桌子?我希望從學生表格中提交的數據顯示類型:表格中的學生和教師表格中提交的數據顯示類型:表格中的教師。

請幫忙~~~

+1

你是什麼意思,當你說它「不起作用」?出了什麼問題?你遇到了什麼錯誤?你有沒有試過顯示你生成的SQL語句,而不是僅僅運行它?這樣看來你的錯誤可能會更容易。 –

+0

另外 - 從SQL注入攻擊的角度來看,您的代碼看起來有點危險。我希望你沒有在暴露於互聯網的服務器上運行它。 –

+0

你可以仔細檢查foreach($字段爲$ f)$ qry。=「'」。 $$ f。 「',」;爲什麼你有2美元?並且可以回顯查詢並查看返回的內容,這有助於查找問題。 –

回答

0

的問題是,因爲裏面的第一foreach,你要找$srr['TYPE'],這大概不存在。簡單的解決方案是將隱藏的元素重命名爲TYPE而不是NOMINATIONTYPE。或者,你可以在foreach內做一些邏輯,這樣if($f == 'TYPE'){$ff = $srr['NOMINATIONTYPE'];} else{$$f = $srr[$f];}

+0

謝謝你太多了! – Sio