>데이터 베이스 >MySQL 튜토리얼 >SQL 주입을 방지하면서 MySQLi에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

SQL 주입을 방지하면서 MySQLi에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-24 17:09:11521검색

How Can I Efficiently Insert Multiple Rows into MySQLi While Preventing SQL Injection?

SQL 주입 완화를 통해 MySQLi에서 여러 행을 효율적으로 삽입

PHP 및 MySQLi를 사용하여 MySQL 데이터베이스에 많은 수의 행을 삽입하려면 다음이 필요합니다. 안전하고 효율적인 기술입니다. 이러한 데이터 볼륨을 처리하는 동안 SQL 주입을 피하는 것은 어려울 수 있습니다.

해결 방법

이 문제를 해결하려면 트랜잭션을 사용하여 삽입 작업을 그룹화하는 것을 고려하세요. 이 접근 방식에는 아래와 같이 준비 및 바인딩 작업을 루프 외부로 이동하는 작업이 포함됩니다.

$array = array("array", "with", "about", "2000", "values");
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");

트랜잭션의 이점

  • 속도 향상: 트랜잭션 내에서 SQL 쿼리를 실행하면 오버헤드가 크게 줄어들고 성능이 향상됩니다. 10,000회 반복 테스트에서는 트랜잭션을 사용할 때 속도가 2배 증가한 것으로 나타났습니다.
  • SQL 주입 완화: 트랜잭션은 일련의 작업을 단일 원자 단위로 그룹화하여 모두 또는 전혀 발생하지 않도록 합니다. 행이 삽입됩니다. 이렇게 하면 부분 삽입을 방지하고 SQL 주입 시도를 방지할 수 있습니다.

구현

전체 삽입을 보장하려면 PHP 루프 외부에서 START TRANSACTION 및 COMMIT 쿼리를 실행해야 합니다. 작업은 단일 트랜잭션으로 처리됩니다. 이 접근 방식은 준비된 문의 보안과 대량 삽입의 효율성을 결합하는 동시에 스택 오버플로를 완화합니다.

위 내용은 SQL 주입을 방지하면서 MySQLi에 여러 행을 효율적으로 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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