>  기사  >  데이터 베이스  >  PDO를 사용하여 준비된 단일 명령문을 사용하여 데이터베이스에 여러 데이터 행을 삽입하려면 어떻게 해야 합니까?

PDO를 사용하여 준비된 단일 명령문을 사용하여 데이터베이스에 여러 데이터 행을 삽입하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-06 22:05:02669검색

How can I insert multiple rows of data into a database using a single prepared statement with PDO?

PDO 준비된 문으로 여러 행 삽입

단일 준비된 문을 사용하여 데이터베이스에 여러 데이터 행을 삽입하는 것이 가능합니다. 준비된 문은 SQL 주입 공격을 방지하고 쿼리 실행을 최적화하여 보안과 효율성을 향상시킵니다.

'col1', 'col2' 및 'col3' 열이 있는 'Table'이라는 테이블에 데이터를 삽입하는 다음 예를 고려하십시오. :

$params = array();
$params[':val1'] = "val1";
$params[':val2'] = "val2";
$params[':val3'] = "val3";
$sql = "INSERT INTO table VALUES (col1, col2, col3) VALUES (:val1,:val2,:val3)";
$stmt = DB::getInstance()->prepare($sql);
$stmt->execute($params);

여러 행을 삽입해야 하는 경우 다음 접근 방식을 구현할 수 있습니다.

  1. VALUES 절 구성: 여러 값 집합 결합 괄호와 쉼표를 사용합니다. 예를 들어 세 행의 값은 ('abc', 'def', 'ghi'), ('abc', 'def', 'ghi'), ('abc', 'def', 'ghi'와 같습니다. ').
  2. 자리 표시자 템플릿 생성: 삽입할 각 값에 대한 자리 표시자(?)로 배열을 채웁니다. 각각 3개의 열이 있는 3개의 행의 경우 이는 (?, ?, ?), (?, ?, ?), (?, ?, ?)입니다.
  3. SQL을 결합합니다. 설명: 자리 표시자 템플릿을 INSERT 쿼리에 VALUES 절로 추가합니다. 최종 문은 다음과 같습니다.

    INSERT INTO Table (col1, col2, col3) VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?)
  4. 준비 및 실행: PDO를 사용하여 확장 문을 준비합니다. 자리 표시자와 동일한 순서로 삽입할 모든 값이 포함된 배열을 전달하여 문을 실행합니다.

    $rows = array(
                array('abc', 'def', 'ghi'),
                array('abc', 'def', 'ghi'),
                array('abc', 'def', 'ghi')
    );
    
    // Your code here as explained in the full response

이 접근 방식의 장점은 모든 값을 준비된 문의 보안 및 최적화 이점을 유지하면서 단일 INSERT 쿼리를 수행합니다.

많은 수의 행이 포함된 시나리오의 경우 루프를 사용하여 한 번에 하나씩 삽입하는 것이 더 효율적일 수 있습니다. 이렇게 하면 성능이 향상되고 잠재적인 메모리 문제가 방지됩니다.

위 내용은 PDO를 사용하여 준비된 단일 명령문을 사용하여 데이터베이스에 여러 데이터 행을 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.