2013-10-09 19 views
4

這裏PHP初學者&我想問一個關於使用表單上傳信息到數據庫的問題。 我有一個網站有48個不同的類別。 www.ralphslocal.com。如果你訪問該網站,你會看到,對於每個類別,我都從我的數據庫的單獨表中獲取信息。如何從表格上傳表格到Mysql

用於填充表格的表格缺少一種選擇我要上傳到表格的方法。此時,當我想上傳到不同的表格時,我需要在「insert.php」中更改表格名稱。

我需要什麼才能選擇要上載到表格上的表格? 如果我不清楚,我表示歉意。我很感激你能給予的幫助。

下面是代碼爲我的形式:

<form action="insert.php" method="POST"> 
<p>Retailer:&#160;&#160;&#160;&#160;<input type="text" name="retailer"></p> 
<p>WebSite:&#160;&#160;&#160;<input type="text" name="website"></p> 
<p>City:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<select name="city"> 
         <option value="BellaVista">BellaVista</option> 
         <option value="Bentonville">Bentonville</option> 
         <option value="Centerton">Centerton</option> 
         <option value="Farmington">Farmington</option> 
         <option value="Fayetteville">Fayetteville</option> 
         <option value="Lowell">Lowell</option> 
         <option value="Rogers">Rogers</option> 
         <option value="Springdale">Springdale</option> 
         <option value="Tontitown">Tontitown</option> 
         <option value="West Fork">West Fork</option> 
                  </select></p> 
<p>Phone:&#160;&#160;&#160;&#160;&#160;&#160;<input type="text" name="phone"></p> 
<input type="submit"> 
</form> 

這裏是代碼爲我的 「insert.php」 文件:

<?php require 'connect.php'; ?> 

<?php 
$sql="INSERT INTO garden_nursery (Retailer, WebSite, City, Phone) 
VALUES 
('$_POST[retailer]','$_POST[website]','$_POST[city]','$_POST[phone]')"; 

if (!mysqli_query($con,$sql)) 
{ 
die('Error: ' . mysqli_error($con)); 
}{ 
echo "1 record added"; 
} 
mysqli_close($con); 
?> 

感謝這麼多! Ralph

+1

請在編寫任何**更多SQL接口代碼之前,您必須閱讀[適當的SQL轉義](http://bobby-tables.com/php)以避免嚴​​重的[SQL注入臭蟲(http://bobby-tables.com/)。當使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **從不**使用字符串插值來實現這一點。 – tadman

+0

你如何確定更新哪個表? – 2013-10-09 18:40:02

+0

感謝您的鏈接和建議。 – Ralph

回答

1

您的問題的答案很簡單。添加到您的形式:

<select name='data_table'> 
    <option value='appliances'> Appliances </option> 
    <option value='garden_nursery'> Garden Nursery </option> 
    <option value='table_name_formated'> Table Name </option> 
    <!-- and so on for all of youre tables --> 
</select> 

在insert.php改變,你assing價值$ SQL中的行:

$sql="INSERT INTO $_POST[data_table] (Retailer, WebSite, City, Phone) 
VALUES ('$_POST[retailer]','$_POST[website]','$_POST[city]','$_POST[phone]')"; 

其他注意事項: 訪問您的網站後,如果我能看到正確地說,你創建了38個不同的表,具有相同的數據結構。爲什麼你不只是添加一列到一個單一的「alldata」(或類似的東西)命名錶,它存儲各自的類別?這樣當您稍後添加新類別時,您不需要始終創建新表格。

附加註釋2: 在嘗試將其存儲在數據庫中之前,逃避用戶提供的輸入也會更安全,就像tadman所說的那樣。把它添加到你的insert.php文件中,在你賦值$ sql的地方。

$datatable=mysqli_real_escape_string($con, $_POST['data_table']); 
$retailer=mysqli_real_escape_string($con, $_POST['retailer']); 
$website=mysqli_real_escape_string($con, $_POST['website']); 
$city=mysqli_real_escape_string($con, $_POST['city']); 
$phone=mysqli_real_escape_string($con, $_POST['phone']); 
$sql="INSERT INTO $datatable (Retailer, WebSite, City, Phone) VALUES ('$retailer','$website','$city','$phone')"; 
+0

太棒了,非常感謝您帶領我在這個正確的方向。它是一個很大的幫助。 – Ralph

+0

不客氣,請不要忘記標記爲正確答案;) –