질문:
다중 삽입을 위해 설계된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!