PDO 준비된 문을 사용하여 효율적으로 여러 행 삽입
별도의 매개변수를 사용하여 여러 삽입 문을 실행하는 대신 PDO를 사용하면 여러 행을 삽입할 수 있습니다. 단일 쿼리를 사용합니다. 이 접근 방식은 명령문을 여러 번 준비하고 실행할 필요가 없도록 하여 성능과 보안을 향상시킵니다.
예를 들어 $values 배열의 값을 테이블 table에 삽입하려면:
$params = []; foreach ($values as $value) { array_push($params, $value['val1'], $value['val2'], $value['val3']); } $row_length = count($values[0]); $nb_rows = count($values); $length = $nb_rows * $row_length; $args = implode(',', array_map(function($el) { return '('.implode(',', $el).')'; }, array_chunk(array_fill(0, $length, '?'), $row_length))); $query = "INSERT INTO table VALUES " . $args; $stmt = DB::getInstance()->prepare($query); $stmt->execute($params);
이 솔루션에서는? 자리 표시자는 행과 열의 수에 따라 동적으로 생성됩니다. 그런 다음 매개변수는 배열에 추가되고 단일 배열로 실행 메소드에 전달됩니다. 이렇게 하면 각 매개변수가 별도로 처리되어 데이터 보안이 보장됩니다.
또는 단일 쿼리를 사용하여 효율적으로 삽입하기에는 행이 너무 많은 경우 개별적으로 실행하는 것이 좋습니다.
$args = array_fill(0, count($values[0]), '?'); $query = "INSERT INTO table VALUES (".implode(',', $args).")"; $stmt = $pdo->prepare($query); foreach ($values as $row) { $stmt->execute($row); }
이것은 이 접근 방식은 대규모 데이터 세트를 수용하면서 준비된 문을 사용하여 보안 이점을 유지합니다.
위 내용은 PDO 준비 문을 사용하여 데이터베이스에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!