> 데이터 베이스 > MySQL 튜토리얼 > PDO MySQL: '배열을 문자열로 변환' 오류 없이 하나의 쿼리에 여러 행을 삽입하는 방법은 무엇입니까?

PDO MySQL: '배열을 문자열로 변환' 오류 없이 하나의 쿼리에 여러 행을 삽입하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-07 04:57:02
원래의
706명이 탐색했습니다.

PDO MySQL: How to Insert Multiple Rows in One Query Without

PDO MySQL: 하나의 쿼리에 여러 행 삽입

질문:

다중 삽입을 위해 설계된 PDO 클래스에서, 매개변수화된 쿼리를 생성했음에도 불구하고 쿼리 실행 시 "배열을 문자열로 변환" 오류가 발생합니다. 이 오류를 어떻게 해결할 수 있습니까?

답변:

이 오류를 해결하려면 데이터 배열을 반복하고 bindValue 전체 배열을 바인딩하는 대신. 이렇게 하면 각 값이 특정 매개변수에 올바르게 바인딩됩니다.

다음은 이 접근 방식을 구현하는 예입니다.

$query = "INSERT INTO $table (key1, key2, key3) VALUES ";
$qPart = array_fill(0, count($data), "(?, ?, ?)");
$query .= implode(",", $qPart);
$stmt = $this->start->prepare($query);
$i = 1;
foreach ($data as $item) { 
    $stmt->bindValue($i++, $item['key1']);
    $stmt->bindValue($i++, $item['key2']); 
    $stmt->bindValue($i++, $item['key3']);
}
$stmt->execute();
로그인 후 복사
또는

foreach 루프를 사용할 수도 있습니다. prepare 문 내부에서 각 행의 값을 바인딩합니다.

$stmt = $pdo->prepare("INSERT INTO foo VALUES (1, 2, 3)");
foreach($data as $item) {
    $stmt->execute($item);
}
로그인 후 복사
이 접근 방식은 각 행에 대해 하나씩 쿼리를 여러 번 실행합니다. 그러나 이전 접근 방식보다 구현이 더 간단합니다.

위 내용은 PDO MySQL: '배열을 문자열로 변환' 오류 없이 하나의 쿼리에 여러 행을 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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