개발자 Q&A

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

2025.08.10 22:23

PdoPgsql::lobOpen 메서드 사용 방법에 대한 질문

목록
  • 깃허브액션도사 1일 전 2025.08.10 22:23
  • 5
    1
저는 PdoPgsql::lobOpen 메서드를 사용하여 LOB 데이터를 열어야 하는데, 어떤 타입의 데이터만 열 수 있는지 궁금합니다.

특히, BLOB (Binary Large OBject)와 CLOB (Character Large OBject) 데이터를 다루는 방법에 대해 알려주세요.

그리고, 이 메서드를 사용할 때 발생할 수 있는 에러는 무엇이며, 어떻게 처리해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    PdoPgsql::lobOpen 메서드는 PostgreSQL의 LOB 데이터를 열기 위한 메서드입니다. 이 메서드는 BLOB (Binary Large OBject)와 CLOB (Character Large OBject) 데이터를 모두 열 수 있습니다.

    LOB 데이터를 열기 위해서는 먼저 LOB 데이터를 참조하는 OID (Object ID) 값을 알아야 합니다. OID 값은 LOB 데이터를 생성할 때 자동으로 할당됩니다.

    BLOB 데이터를 열기 위해서는 다음과 같은 코드를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $pdo = new PDO('pgsql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
    
    $oid = 'OID 값'; // BLOB 데이터의 OID 값
    
    $lob = $pdo->prepare('SELECT lo_open(:oid)');
    
    $lob->bindParam(':oid', $oid);
    
    $lob->execute();
    
    $blob = $pdo->prepare('SELECT lo_read(:oid, :offset, :length)');
    
    $blob->bindParam(':oid', $oid);
    
    $blob->bindParam(':offset', $offset);
    
    $blob->bindParam(':length', $length);
    
    $blob->execute();
    
    $data = $blob->fetch();
    
    


    CLOB 데이터를 열기 위해서는 다음과 같은 코드를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $pdo = new PDO('pgsql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
    
    $oid = 'OID 값'; // CLOB 데이터의 OID 값
    
    $lob = $pdo->prepare('SELECT lo_open(:oid)');
    
    $lob->bindParam(':oid', $oid);
    
    $lob->execute();
    
    $clob = $pdo->prepare('SELECT lo_read(:oid, :offset, :length)');
    
    $clob->bindParam(':oid', $oid);
    
    $clob->bindParam(':offset', $offset);
    
    $clob->bindParam(':length', $length);
    
    $clob->execute();
    
    $data = $clob->fetch();
    
    


    이 메서드를 사용할 때 발생할 수 있는 에러는 다음과 같습니다.

    - OID 값이 유효하지 않은 경우
    - LOB 데이터가 존재하지 않는 경우
    - LOB 데이터가 열리지 않는 경우 (권한 문제 등)

    이러한 에러를 처리하기 위해서는 try-catch 블록을 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    try {
    
        // LOB 데이터 열기
    
    } catch (PDOException $e) {
    
        // 에러 처리 코드
    
    }
    
    


    또한, LOB 데이터를 열기 전에 OID 값이 유효한지 확인하는 코드를 추가할 수 있습니다.

    #hostingforum.kr
    php
    
    if ($pdo->query("SELECT EXISTS(SELECT 1 FROM pg_largeobject WHERE loid = $oid)")->fetchColumn() == 0) {
    
        // OID 값이 유효하지 않은 경우
    
    }
    
    

    2025-08-10 22:24

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

검색

게시물 검색