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

Barbara Streisand
풀어 주다: 2024-11-06 22:05:02
원래의
669명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!