PDO 준비된 삽입: 대량 데이터 삽입을 위한 보안 및 성능 강화
데이터 조작 영역에서 PDO 준비된 문은 우수한 수준을 제공합니다. 정적 쿼리에 비해 보안 및 성능이 우수합니다. 이는 단일 쿼리로 여러 행의 값을 효율적으로 삽입할 수 있는 대량 데이터 삽입으로 확장됩니다.
PDO의 준비된 문을 활용하여 "하나의 쿼리를 사용하여 여러 행의 값 삽입"을 생성할 수 있습니다. 핵심은 여러 값 집합을 수용하는 구조화된 쿼리를 작성하는 것입니다.
설명을 위해 다음 SQL 문을 고려해 보겠습니다.
INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),...
이 문에서 각 값 집합은 자체 괄호 안에 있습니다. 준비된 삽입에 대해 이 쿼리를 적용하기 위해 각 열에 대한 자리 표시자 시퀀스를 활용하고 이러한 자리 표시자를 연결하여 VALUES 부분을 생성할 수 있습니다.
예를 들어, 두 개의 열이 있는 경우 VALUES 부분은 다음과 같습니다.
(?,?),
그런 다음 각 데이터 행에 대해 이 VALUES 부분을 복제하고 쉼표:
(?,?), (?,?), ...
마지막으로 완전한 쿼리를 구성할 수 있습니다.
INSERT INTO `tbl` (`key1`,`key2`) VALUES (?,?) , (?,?), ...
PDO로 이 쿼리를 실행하려면 명령문을 준비하고 다음을 사용하여 모든 값이 포함된 배열을 제공합니다. 실행() 메소드. 아래 코드는 이 접근 방식을 보여줍니다.
$data = [['valueA1', 'valueB1'], ['valueA2', 'valueB2']]; $values = implode(',', array_fill(0, count($data[0]), '?')); $sql = "INSERT INTO table (colA, colB) VALUES " . implode(',', array_fill(0, count($data), "($values)")) . ";"; $stmt = $db->prepare($sql); $stmt->execute(array_merge(...$data));
이 기술은 입력을 삭제하여 데이터 무결성을 보장할 뿐만 아니라 여러 행 삽입에 대해 단일 쿼리를 실행하여 성능을 최적화합니다.
위 내용은 PDO 준비 문은 보안 및 성능 강화를 위해 대량 데이터 삽입을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!