>  기사  >  데이터 베이스  >  PDO 준비 문을 사용하여 데이터베이스에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

PDO 준비 문을 사용하여 데이터베이스에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-09 09:27:02556검색

How can I efficiently insert multiple rows into a database using PDO prepared statements?

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

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