2011-09-06 5 views
0

나는, 나는 MySQL의에 다음과 같은 배열 필드에서 양식 데이터를 삽입 붙어 싶어 해요 :폼 배열 값을 MySQL에 삽입하는 방법은 무엇입니까?

<input type='text' name='name[]' />` and `<input type='text' name='url[]' /> 

내가 아는 방법이 예

foreach($_POST['name'] as $name) 
{ 
    echo $name; 
} 

그러나처럼 출력 한 필드의 데이터에 내 양식 <input type='text' name='name[]' /><input type='text' name='url[]' />이 모두 올바르게 작동하려면 어떻게해야합니까?

+0

foreach ($ _ POST [ 'url'] $ url) { echo $ url; } – Bruce

+0

테이블 스키마 – ajreal

답변

5

나는 시도하고 반복해서 DB 쿼리를 방지하고 단지 하나의 큰 삽입 문에 모든 것을 넣어 것입니다 : 당신이 한 번만 데이터베이스에 접속해야

$query = "INSERT INTO table1 (name, url) VALUES "; 
foreach($_POST['name'] as $i => $name) 
{ 
    // Get values from post. 
    $name = mysql_real_escape_string($name); 
    $url = mysql_real_escape_string($_POST['url'][$i]); 

    // Add to database 
    $query = $query." ('$name','$url') ,"; 
} 
$query = substr($query,0,-1); //remove last char 
$result = mysql_query($query); 

그 방법을 훨씬 더 빨리 삽입을.
엔진이 트랜잭션 (InnoDB 외)을 지원하는 경우 모든 삽입은 단일 트랜잭션에서 발생합니다.

-3

단일 DB 필드에 모든 값을 저장하려면 배열을 함축해야합니다.

$all_names= implode(",", $name[]); 

이렇게하면 모든 배열 값을 쉼표로 구분 된 단일 변수에 넣을 수 있습니다.

+0

-1을 포함하여 데이터베이스에 CSV 값을 저장하는 것은 여러 가지 이유로 매우 나쁜 아이디어입니다. – Johan

+0

일부 독서 자료를 올바른 방향으로 가르쳐 주시겠습니까? 이 작업은 꽤 정기적으로 수행되는 것으로 보입니다. 왜 이것이 좋지 않은지와 확인란 배열과 같은 값을 저장하는 더 좋은 방법을 배우고 싶습니다. –

3

당신은 너무처럼 루프의 인덱서를 사용할 수 있습니다 물론

foreach($_POST['name'] as $i => $name) 
{ 
    // Get values from post. 
    $name = mysql_real_escape_string($name); 
    $url = mysql_real_escape_string($_POST['url'][$i]); 

    // Add to database 
    $sql = "INSERT INTO `table` (`name`, `url`) VALUES ('".$name."', '".$url."')"; 
    $result = mysql_query($sql); 
} 

, 그것은 당신의 쿼리에 추가하기 전에 값에 mysql_real_escape_string을 사용하는 것이 좋습니다.

+1

+1, 나는이 지위가 '0'점수를받을 만하다고 생각하지 않는다. – Johan

관련 문제