2009-08-20 2 views

답변

42

그것을 가치, 그리고 같은 테이블 에 동일한 데이터를 삽입하는 인 경우에 따라 무엇을 위해, it's much better to insert multiple values with the one insert 예를 들어, 을 악용 할 수 SQL 주입 공격으로부터 보호하기 위해, 각 문은 세미콜론으로 종료하지만, PHP는 한 번에 두 개 이상의 쿼리를 보낼 수 없기 때문에 일반적으로

INSERT INTO a VALUES (1,23),(2,34),(4,33); 
INSERT INTO a VALUES (8,26),(6,29); 
+2

"속도 입력"페이지를 참조 해 주셔서 감사합니다. – SarathChandra

0

아니요. 별도의 쿼리이므로이를 호출해야합니다.

33

아니요, mysql_query()은 한 번에 하나의 쿼리 만 허용합니다.

당신은 다음과 같이 여러 행을 삽입 할 수 있습니다

INSERT INTO table (col1, col2) 
VALUES (1, 2), (3, 4), (5, 6) 
+0

이 방법이 더 좋습니다. 데이터를 덤프 할 필드 이름을 지정하는 것이 중요합니다. ! – itsricky

2

, 즉 유효한 SQL입니다 저조한 스크립트.

당신은 여전히 ​​같은 구문을 사용할 수 있습니다 : MySQL의 dev에 지원에서

INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2'); 
10

그래서 삽입 MySQL dev forum

INSERT INTO table (artist, album, track, length) 
VALUES 
("$artist", "$album", "$track1", "$length1"), 
("$artist", "$album", "$track2", "$length2"), 
("$artist", "$album", "$track3", "$length3"), 
("$artist", "$album", "$track4", "$length4"), 
("$artist", "$album", "$track5", "$length5"); 

정상 항상 같이 간다 : 먼저 테이블 이름을 명명

  • 새 행을 삽입하려는 위치
  • fol 괄호에 열 이름 명명에 의해 lowed (참고 : ALL 열을 삽입 할 경우 필요하지 않음)를
  • VALUES 키 이름과 그 뒤에 괄호에 새로운 행에 삽입 할 값을 제공 위의 표에서,
  • COMMA 뒤에 다음 다른
  • 상기 언급 된 표에 새로운 행에 대한 새로운 값을 괄호 쌍 이것이 N-번 반복은만큼 삽입하는 데이터가있다.

ONE 삽입 문을 사용하여 여러 값 삽입하기. : 함수 및 루프 내에서

2

복사/붙여 넣기 예는 내 문제는이 mysqli 방법을 사용하여 내 PHP 프로젝트 [mysqli에서 여러 쿼리를 실행 해결했다

public function duplicateItem($ids) 
{ 
    if (isset($ids[0])){ //at least one item 

     $sqlQuery = "INSERT INTO items (item_id, content) VALUES "; 

     for($i=0; $i<count($ids); $i++) { 

       if ($i == count($ids)-1){ 
        $sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."');"; 
       }else{ 
        $sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."'),"; 
       } 

     } 

     mysql_query($sqlQuery) or die('Error, insert query failed: '.mysql_error()); 

    } 
} 
+0

연결을 피하는 것이 좋습니다. 'implode()'를 사용하십시오. 자세한 내용은이 [대답] (http://stackoverflow.com/a/780046/4040525)을 참조하십시오. –

+1

왜 implode()를 사용하는 것이이 경우에 유익합니까? 위의 질문에서 일반적인 SQL 문이 있습니다. 응답에서 그들은 많은 양의 텍스트 (대용량 텍스트의 1000 개 삽입과 같은)에 대해 말하며, 그 경우 연결을 피하는 것이 좋습니다. –

+0

알아.그것의 연결을 여기에서 사용하는 그것의 OK. 어제는 두 가지 대답을 모두 눈치 챘고 어림짐작으로'implode()'를 사용하는 것이 더 낫다고 생각했습니다. –

-1
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4); 
관련 문제