MySQLi 준비된 문을 사용하여 여러 행을 효율적으로 삽입하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-20 16:35:02
원래의
794명이 탐색했습니다.

How to Insert Multiple Rows Using MySQLi Prepared Statements Efficiently?

MySQLi 준비된 명령문으로 여러 행 삽입

문제:

효율적으로 삽입하고 싶습니다. MySQLi 준비된 문을 사용하여 여러 행을 데이터베이스에 추가합니다. 현재 접근 방식에는 삽입할 각 행에 대해 별도의 문자열을 구성하는 방식이 포함되어 있어 비효율적입니다. 한 번의 실행으로 여러 행을 삽입하는 단일 준비된 문을 실행하는 방법을 찾고 있습니다.

해결책:

준비된 문은 일반적으로 단일 행 작업에 사용되지만, 하나의 명령문에 여러 행을 삽입할 수 있는 복잡한 기술이 있습니다. 인덱스 배열의 샘플 인덱스 배열([[1, 2, 3], [4, 5, 6], [7, 8, 9]])에서 테스트된 다음 코드는 프로세스를 보여줍니다.

<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // Sample indexed array of indexed arrays
$rowCount = count($rows);
$values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")";

$conn = new mysqli("localhost", "root", "", "myDB");
$stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES $values");
$stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows));
$stmt->execute();</code>
로그인 후 복사

이 접근 방식은 준비된 단일 문("INSERT INTO test (col1, col2, col3) VALUES (...)")을 구성하고 평면화된 $rows 배열의 자리 표시자 값을 채웁니다. str_repeat 함수는 바인딩 매개변수에 대한 적절한 수의 자리 표시자 문자를 정의하는 데 사용됩니다.

대체 접근 방식:

여러 행을 삽입하여 루프 실행이 필요한 경우 단일 행 준비된 문 접근 방식:

<code class="php">foreach ($rows as $row) {
    $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES (?,?,?)");
    $stmt->bind_param('iii', $row[0], $row[1], $row[2]);
    $stmt->execute();
}</code>
로그인 후 복사

추가 리소스:

  • [IN()에서 동적 값 수를 사용하여 선택](https:/ /stackoverflow.com/questions/2216867/select-with-dynamic-number-of-values-in-in)
  • [동적 수의 LIKE 조건으로 선택](https://stackoverflow.com/questions /6022078/동적 개수의 유사 조건 선택)

위 내용은 MySQLi 준비된 문을 사용하여 여러 행을 효율적으로 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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