
OCILob::rewind 메서드는 BLOB 데이터를 다시 처음부터 읽을 수 있도록 위치를 초기화하는 메서드입니다. 그러나 이 메서드는 BLOB 데이터를 읽은 후에만 작동합니다.
위의 코드에서 $lob->rewind() 메서드가 제대로 작동하지 않는 이유는 $lob->close() 메서드를 호출한 후에 $lob->rewind() 메서드를 호출했기 때문입니다.
$lob->close() 메서드는 BLOB 데이터를 닫고, 위치를 초기화하는 메서드입니다. 따라서 $lob->rewind() 메서드를 호출하기 전에 $lob->close() 메서드를 호출하면 $lob->rewind() 메서드는 제대로 작동하지 않습니다.
해결 방법은 $lob->close() 메서드를 호출하기 전에 $lob->rewind() 메서드를 호출하는 것입니다. 또는 $lob->close() 메서드를 호출하지 않고, $lob->free() 메서드를 호출하여 BLOB 데이터를 닫고 위치를 초기화하는 것입니다.
#hostingforum.kr
php
$lob = oci_new_descriptor($conn, OCI_D_LOB);
$lob->write($data, strlen($data));
$lob->save();
$lob->rewind(); // 이 부분에서 문제가 발생하지 않습니다.
$lob->free(); // 또는 $lob->close();
또한, $lob->rewind() 메서드를 호출하기 전에 $lob->load() 메서드를 호출하여 BLOB 데이터를 다시 로드하는 방법도 있습니다.
#hostingforum.kr
php
$lob = oci_new_descriptor($conn, OCI_D_LOB);
$lob->write($data, strlen($data));
$lob->save();
$lob->close();
$lob->load(); // BLOB 데이터를 다시 로드합니다.
$lob->rewind(); // 이 부분에서 문제가 발생하지 않습니다.
$lob->free();
2025-03-14 16:39