2011-01-26 66 views
1

我有一個表命名爲水果:PHP POST多行到MySQL

id  fruit 
1  Apple 
1  Banana 
2  Apple 
2  Apple 
2  Pear

我希望能夠在一次使用PHP添加幾行。

我試過兩組兩個文本框(用於id和水果),但只使用最後一組文本框插入1行。

編輯:

那麼我該怎麼辦,如果我有這樣的一個表:

id  fruit  taste 
1  Apple  Good 
1  Banana  Okay 
2  Apple  Good 
2  Apple  Bad 
2  Pear  Good

回答

3

你需要使用括號[]正確命名您的文本框,以形成一個陣列,通過你的POST'ed數組,然後循環插入數據。在使用mysql_real_escape_string或準備好的查詢運行查詢之前,請確保您正在轉義數據。

編輯:更新示例,因爲OP附加信息的問題。

在您提供的擴展示例中,它看起來像taste只有幾個選擇。在這種情況下,我會在文本框中使用<select>元素。看看我的例子,我個人如何做。


顯着的變化:使用PHP一個簡單的循環,你可以指定你要顯示,方便地添加其他選項的口味選擇框字段的數量。我在[]中放置了一個任意數字,以確保我們在處理表單時將果實與味道聯繫起來。

<?php 
$n = 5; //Number of fields to show 
$tastes = array('Great', 'Good', 'Okay', 'Bad', 'Horrible'); 

for($i=0;$i<$n;$i++) { 
    echo '<p>'; 
    echo '<input type="text" name="fruit['.$i.']" /> '; 
    echo '<select name="taste['.$i.']">'; 
    foreach($tastes as $t) { 
    echo '<option value="'.htmlentities($t).'">'.$t.'</option>'; 
    } 
    echo '</select>'; 
    echo '</p>'; 
} 
echo '<input type="submit" name="submit" value="Submit" />'; 
?> 

過程代碼
顯着的變化:我檢查,以確保水果具有值,否則將無法插入。我正在使用該任意值(這是數組鍵$k)來選擇與水果相匹配的味道。

<?php 
if($_POST['submit']) { 
    foreach($_POST['fruit'] as $k => $v) { 
    if(!empty($v)) { 
     $query = "INSERT INTO fruits (fruit, taste) VALUE ('".mysql_real_escape_string($v)."', '".mysql_real_escape_string($_POST['taste'][$k])."')"; 
     mysql_query($query); 
    } 
    } 
} 
?> 
0

在INSERT語句中只需添加值,就像這樣:

INSERT INTO tbl_name( a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);

所以對於你的榜樣,

INSERT INTO水果(水果)VALUES( '橙色'),( '檸檬'),( '石灰');

應該工作。

http://dev.mysql.com/doc/refman/5.5/en/insert.html

+0

** - ** 1不會工作 - >字符串需要在''` – thedom 2011-01-26 20:36:35

+0

加入到放的報價爲更好地理解 – awestover89 2011-01-26 20:39:42

0

MySQL支持在單個查詢多個插件:

INSERT INTO table (field1, field2) VALUES (values1a, values2a), (values1b, values2b), etc... 
0

可以在save.php使用內爆功能使例如

元件的HTML陣列中的html

<form action='save.php' method='post'/> 
<input name='fruits[]' value='' /> 
<input name='fruits[]' value='' /> 
<input name='fruits[]' value='' /> 
</form> 

然後

$fruits = ''; 
foreach($_POST['fruits'] as $fruit) { 
$fruits .= "({$fruit})," 
} 

$fruits = rtrim($fruits,','); 

$sql = "INSERT INTO fruits(fruit) VALUES {$fruits}"; 
1

單個插入。

你的HTML

<input type="text" name="fruit[]" /> 
<input type="text" name="fruit[]" /> 
<input type="text" name="fruit[]" /> 

你的PHP

foreach($_POST['fruit'] as $fruit) $values[] = "('".mysql_real_escape_string($fruit)."')"; 
if(count($values) > 0) mysql_query("INSERT INTO fruits (fruitName) VALUES " . implode(',', $values));