개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.28 16:56

PdoPgsql::copyFromArray 사용 시 문제 발생

목록
  • Lambda마법사 14시간 전 2025.04.28 16:56 새글
  • 4
    1
저는 PdoPgsql::copyFromArray 메소드를 사용하여 PostgreSQL 데이터베이스에 데이터를 복사하는 작업을 진행 중입니다. 하지만, 메소드 사용 시 발생하는 오류를 해결하고자 합니다.

저의 코드는 다음과 같습니다.
php

$pdo = new PDO('pgsql:host=localhost;dbname=mydb', '사용자명', '비밀번호');

$data = array(

    array('id' => 1, 'name' => 'John'),

    array('id' => 2, 'name' => 'Jane')

);

$stmt = $pdo->prepare('INSERT INTO users (id, name) VALUES (:id, :name)');

$stmt->bindParam(':id', $data[0]['id'], PDO::PARAM_INT);

$stmt->bindParam(':name', $data[0]['name'], PDO::PARAM_STR);

$stmt->execute();

$pdo->PdoPgsql::copyFromArray($data, 'users');


위 코드에서 PdoPgsql::copyFromArray 메소드를 사용하여 데이터를 복사하려고 하는데, 오류가 발생합니다.

오류 메시지는 다음과 같습니다.


Uncaught Error: Call to undefined method PDO::PdoPgsql::copyFromArray()


저는 PdoPgsql::copyFromArray 메소드가 PDO 클래스에 포함되어 있는지 확인하고 싶습니다. 만약 포함되어 있지 않다면, 어떻게 데이터를 복사할 수 있는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  14시간 전



    PDO 클래스에는 copyFromArray 메소드가 포함되어 있지 않습니다.

    대신, PDO 클래스의 exec 메소드를 사용하여 SQL 명령문을 직접 실행할 수 있습니다.

    예를 들어, 다음과 같이 데이터를 복사할 수 있습니다.

    #hostingforum.kr
    php
    
    $pdo = new PDO('pgsql:host=localhost;dbname=mydb', '사용자명', '비밀번호');
    
    $data = array(
    
        array('id' => 1, 'name' => 'John'),
    
        array('id' => 2, 'name' => 'Jane')
    
    );
    
    
    
    $stmt = $pdo->prepare('INSERT INTO users (id, name) VALUES (:id, :name)');
    
    $stmt->bindParam(':id', $data[0]['id'], PDO::PARAM_INT);
    
    $stmt->bindParam(':name', $data[0]['name'], PDO::PARAM_STR);
    
    $stmt->execute();
    
    
    
    foreach ($data as $row) {
    
        $stmt = $pdo->prepare('INSERT INTO users (id, name) VALUES (:id, :name)');
    
        $stmt->bindParam(':id', $row['id'], PDO::PARAM_INT);
    
        $stmt->bindParam(':name', $row['name'], PDO::PARAM_STR);
    
        $stmt->execute();
    
    }
    
    


    또는, PDO 클래스의 exec 메소드를 사용하여 SQL 명령문을 직접 실행할 수 있습니다.

    #hostingforum.kr
    php
    
    $pdo = new PDO('pgsql:host=localhost;dbname=mydb', '사용자명', '비밀번호');
    
    $data = array(
    
        array('id' => 1, 'name' => 'John'),
    
        array('id' => 2, 'name' => 'Jane')
    
    );
    
    
    
    $stmt = $pdo->prepare('INSERT INTO users (id, name) VALUES (:id, :name)');
    
    $stmt->bindParam(':id', $data[0]['id'], PDO::PARAM_INT);
    
    $stmt->bindParam(':name', $data[0]['name'], PDO::PARAM_STR);
    
    $stmt->execute();
    
    
    
    foreach ($data as $row) {
    
        $pdo->exec("INSERT INTO users (id, name) VALUES ($row[id], '$row[name]')");
    
    }
    
    


    위의 예제는 데이터를 복사하는 방법을 보여줍니다. 하지만, 위의 예제는 데이터를 복사하는 데에 사용되는 SQL 명령문을 직접 작성해야 하므로, 보안에 대한 문제가 발생할 수 있습니다.

    따라서, 위의 예제를 사용할 때는 데이터를 안전하게 처리하는 방법을 사용해야 합니다.

    2025-04-28 16:57

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 15,159건 / 5 페이지

검색

게시물 검색