2011-01-26 5 views
1

에 나는 테이블라는 이름의 과일이 있습니다PHP POST 여러 행은 MySQL의

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

한번 PHP를 사용하여 여러 행을 추가 할 수 있도록하고 싶습니다.

두 개의 텍스트 상자 (id와 fruit)를 두 세트로 사용하려고 시도했지만 마지막으로 한 세트의 텍스트 상자를 사용하여 한 행만 삽입했습니다.

편집 : (tbl_name를 INTO

INSERT :

하여 삽입 문에서
id  fruit  taste 
1  Apple  Good 
1  Banana  Okay 
2  Apple  Good 
2  Apple  Bad 
2  Pear  Good

답변

3

데이터를 삽입하십시오. 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

에 대한 – thedom

+0

성능은 여기에 문제가되지 않습니다. P –

+0

안녕하세요, 죄송합니다. OP를 수정했습니다. – Brian

0

이 너무처럼 값을 추가 :이 같은 테이블이 있으면 내가해야합니까 그리고 무엇

a, b, c) 값 (1,2,3), (4,5,6), (7,8,9); 귀하의 예를 들어 너무

, 과일 INTO

INSERT (과일) VALUES ('오렌지'), ('레몬'), ('라임');

해야합니다.

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

+0

** - 1 ** 작동하지 않습니다 -> 문자열에서 더 나은 이해 – thedom

+0

추가''아래 인용문을 넣어해야 성능면에서 한번에 여러 개의 값을 갖는 하나의 인서트를 만드는 것이 낫습니다. – awestover89

0

MySQL은 단일 쿼리에서 여러 삽입을 지원

당신은 당신의 POST'ed 배열을 통해 배열, 다음 루프를 형성하기 위해 제대로 괄호 []를 사용하여 텍스트 상자의 이름을 지정해야
INSERT INTO table (field1, field2) VALUES (values1a, values2a), (values1b, values2b), etc... 
0

당신은 기능 내파 사용

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

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

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

하나씩 삽입 save.php에이어서

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

HTML

요소의 HTML 어레이를 만들 수있다.

귀하의 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));