我有一個表命名爲水果: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
我有一個表命名爲水果: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
你需要使用括號[]
正確命名您的文本框,以形成一個陣列,通過你的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);
}
}
}
?>
在INSERT語句中只需添加值,就像這樣:
INSERT INTO tbl_name( a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);
所以對於你的榜樣,
INSERT INTO水果(水果)VALUES( '橙色'),( '檸檬'),( '石灰');
應該工作。
MySQL支持在單個查詢多個插件:
INSERT INTO table (field1, field2) VALUES (values1a, values2a), (values1b, values2b), etc...
可以在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}";
單個插入。
你的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));
** - ** 1不會工作 - >字符串需要在''` – thedom 2011-01-26 20:36:35
加入到放的報價爲更好地理解 – awestover89 2011-01-26 20:39:42