2013-04-30 37 views
-2

我創建了一個用戶表單,其中一旦按下提交按鈕我想發送/插入數據到mysql數據庫添加一條新記錄。該表格有超過100個輸入字段。我怎樣才能做到這一點。這是我的示例php代碼。如何插入到超過100個字段的表單中

<html> 
<head> 
</head> 
<body> 
<?php 
if (isset($_POST['submit'])){ 


//Variables for connecting to your database. 
      //These variable values come from your hosting account. 
      $hostname = "hostname"; 
      $username = "username"; 
      $password = "password"; 
      $dbname = "dbname"; 
      $mystuff = "tenant_lname","tenant_fname","tenant_mname","ssn","dl_number","dl_state","birthday","tenant_hphone","tenant_wphone","tenant_cphone","curr_street","curr__unit","curr_city","curr_state","curr_zip","how_long_from","how_long_to","last_rent_mnt","last_rent_amt","own_man_name","own_man_tel","curr_reason","pre_street","pre_unit","pre_city","pre_state","pre_zip","pre_from","pre_to","pre_last_rent","pre_amt","pre_owner","pre_owner_tel","pre_reason","sec_pre_street","sec_pre_unit","sec_pre_city","sec_pre_state","sec_pre_zip","sec_pre_from","sec_pre_to","sec_pre_last_paid_mnt","sec_pre_amt","sec_pre_owner","sec_pre_owner_tel","sec_pre_reason","curr_emp_name","curr_emp_add","curr_emp_phone","curr_emp_pos","curr_emp_bus_type","curr_emp_sup","curr_emp_from","curr_emp_to","curr_emp_salary","pre_emp_name","pre_emp_add","pre_emp_phone","pre_emp_pos","pre_emp_bus_type","pre_emp_sup_name","pre_emp_from","pre_emp_to","pre_emp_salary","move_date","addntl_occ_name","addntl_occ_age","addntl_occ_relation","addntl_ft","addntl_pt","addntl_occ1_name","addntl_occ1_age","addntl_occ1_relation","addntl_occ1_ft","addntl_occ1_pt","addntl_occ2_name","addntl_occ2_age","addnt2_occ1_relation","addntl_occ2_ft","addntl_occ2_pt","addntl_occ3_name","addntl_occ3_age","addntl_occ3_relation","addntl_occ3_ft","addntl_occ3_pt","credit_yes","credit_no","det_yes","det_no","evict_yes","evict_no","bnkry_yes","bnkry_no","fel_yes","fel_no","pet_yes","pet_no","pet_numb","pet_type","furn_yes","furn_no","ins_cov_yes","ins_cov_no","ints_yes","ints_no","ints_type","smoke_yes","smoke_no","occ_smoke_yes","occ_smoke_no","explain_smoke","bnk_name","bnk_add","checking","checking_bal","saving","saving_bal","bnk_name1","bnk_add1","checking1","checking_bal1","saving1","saving_bal1","other_income","credit_name","credit_add","credit_city","credit_acct","credit_bal","credit_payment","credit_name1","credit_add1","credit_city1","credit_acct1","credit_bal1","credit_payment1","credit_acct2_name","credit_add2","credit_city2","credit_acc2","credit_bal2","credit_payment2","credit_acc3_name","credit_acc3_add","credit_acc3_city","credit_acc3_number","credit_acc3_bal","credit_acc3_payment","emer_contact_name","emer_contact_add","emer_relation","emer_phone","reg_owner_yes","reg_owner_no","reg_who","vehicle_year","vehicle_make","vehicle_model","vehicle_color","vehicle_license","veh_state","vehicle2_year","vehicle2_make","vehicle2_model","vehicle2_color","vehicle2_license","veh2_state"; 



$con = mysql_connect("$hostname","$username","$password"); 
if (!$con){ 
die ("Can not connect:" . mysql_error()); 
} 

mysql_select_db("dbname",$con); 

$sql = "INSERT INTO dbname ($mystuff) VALUES ('$_POST[$mystuff]')"; 

mysql_query($sql,$con); 

mysql_close($con); 
} 
?> 
</body> 
</html> 
+0

我想這樣做,而不輸入所有的字段名稱 – 2013-04-30 01:48:45

+0

1.不要在php中使用mysql擴展,因爲它已被棄用2.使用pdo參數化查詢 – Satya 2013-04-30 01:49:33

+0

@Don Austin:你基本上是在尋找一些東西稱爲數組:http://php.net/array然後是一些名爲[loops](http://php.net/control-structures.foreach) - 其餘部分就像HTML表單和SQL查詢似乎已經知道但請注意,您使用的數據庫客戶端庫使編寫不安全代碼變得容易,並且不再處於積極的開發階段。 – 2013-04-30 01:57:18

回答

0

$ mystuff應該是一個數組。

您可以使用循環生成查詢和表單。

做驗證,如果這些是用於生產使用!

$ _POST也是一個數組,所以$ _POST [「field1」,「field2」,...]是一個語法錯誤。 您一次只能訪問一個密鑰,例如$ _POST ['field1']。 ','。 $ _ POST [「字段2」]

您可以通過焦炭加入數組中的所有值(例如「」)與implode()

重新考慮你的數據庫模式!

未經測試:

<html> 
`enter code here`<head> 
`enter code here`</head> 
<body> 
<?php 
>if (isset($_POST['submit'])){ 

    //Variables for connecting to your database. 
    //These variable values come from your hosting account. 
    $hostname = "hostname"; 
    $username = "username"; 
    $password = "password"; 
    $dbname = "dbname"; 
    $mystuff = array( "tenant_lname","tenant_fname","tenant_mname","ssn","dl_number","dl_state","birthday","tenant_hphone","tenant_wphone","tenant_cphone","curr_street","curr__unit","curr_city","curr_state","curr_zip","how_long_from","how_long_to","last_rent_mnt","last_rent_amt","own_man_name","own_man_tel","curr_reason","pre_street","pre_unit","pre_city","pre_state","pre_zip","pre_from","pre_to","pre_last_rent","pre_amt","pre_owner","pre_owner_tel","pre_reason","sec_pre_street","sec_pre_unit","sec_pre_city","sec_pre_state","sec_pre_zip","sec_pre_from","sec_pre_to","sec_pre_last_paid_mnt","sec_pre_amt","sec_pre_owner","sec_pre_owner_tel","sec_pre_reason","curr_emp_name","curr_emp_add","curr_emp_phone","curr_emp_pos","curr_emp_bus_type","curr_emp_sup","curr_emp_from","curr_emp_to","curr_emp_salary","pre_emp_name","pre_emp_add","pre_emp_phone","pre_emp_pos","pre_emp_bus_type","pre_emp_sup_name","pre_emp_from","pre_emp_to","pre_emp_salary","move_date","addntl_occ_name","addntl_occ_age","addntl_occ_relation","addntl_ft","addntl_pt","addntl_occ1_name","addntl_occ1_age","addntl_occ1_relation","addntl_occ1_ft","addntl_occ1_pt","addntl_occ2_name","addntl_occ2_age","addnt2_occ1_relation","addntl_occ2_ft","addntl_occ2_pt","addntl_occ3_name","addntl_occ3_age","addntl_occ3_relation","addntl_occ3_ft","addntl_occ3_pt","credit_yes","credit_no","det_yes","det_no","evict_yes","evict_no","bnkry_yes","bnkry_no","fel_yes","fel_no","pet_yes","pet_no","pet_numb","pet_type","furn_yes","furn_no","ins_cov_yes","ins_cov_no","ints_yes","ints_no","ints_type","smoke_yes","smoke_no","occ_smoke_yes","occ_smoke_no","explain_smoke","bnk_name","bnk_add","checking","checking_bal","saving","saving_bal","bnk_name1","bnk_add1","checking1","checking_bal1","saving1","saving_bal1","other_income","credit_name","credit_add","credit_city","credit_acct","credit_bal","credit_payment","credit_name1","credit_add1","credit_city1","credit_acct1","credit_bal1","credit_payment1","credit_acct2_name","credit_add2","credit_city2","credit_acc2","credit_bal2","credit_payment2","credit_acc3_name","credit_acc3_add","credit_acc3_city","credit_acc3_number","credit_acc3_bal","credit_acc3_payment","emer_contact_name","emer_contact_add","emer_relation","emer_phone","reg_owner_yes","reg_owner_no","reg_who","vehicle_year","vehicle_make","vehicle_model","vehicle_color","vehicle_license","veh_state","vehicle2_year","vehicle2_make","vehicle2_model","vehicle2_color","vehicle2_license","veh2_state"); 


    $sql_values=array(); 
    foreach($mystuff as $fieldname) { 
     /* do validation! */ 

     $sql_values[$fieldname] = "'" . mysql_real_excape_stiring($_POST[$fieldname]) . "'"; 
    } 


    $con = mysql_connect("$hostname","$username","$password"); 
    if (!$con){ 
     die ("Can not connect:" . mysql_error()); 
    } 

    mysql_select_db("dbname",$con); 

    $sql = "INSERT INTO dbname (".implode(',', $mystuff).") VALUES (" . implode(',', $sql_values) . ")"; 

    mysql_query($sql,$con); 

    mysql_close($con); 
} 


foreach($mystuff as $fieldname) { 
    echo "...an input field..."; 
} 

?> 



</body> 
0

創建輸入類似:

<input type="text" name="datas[firstname]"/> 
<input type="text" name="datas[lastname]"/> 

可以使用處理數據:

<?php 

$datas = $_POST['datas']; 
$columns = implode(",",array_keys($datas)); 

//add ' since mysql use ' for strings 
$values = implode("','",$datas); 

$sql = "INSERT INTO dbname (".$columns.") VALUES ('".$values."')"; 

希望這有助於。

+0

'$ _POST'已經是一個數組了,爲什麼不使用'foreach($ _ POST作爲$ k => $ v)'? – 2013-04-30 02:26:17

+0

迭代數組是一種替代解決方案,因爲我們應該按照上面定義的方式通過對$ k進行級聯來構建列。是的,你是對的,$ _POST ['datas']已經是一個數組了,所以我不想迭代它,而更喜歡使用需要數組作爲參數的implode。 – 2013-04-30 02:34:28

+0

這裏是SQL注入公司。 – 2013-04-30 03:17:29

相關問題