ラージオブジェクト (LOB)
アプリケーション内で、データベースに「大きな」データを格納する
必要を感じることがあるかもしれません。「大きな」とは、一般的には
「4kb 程度以上」を指しますが、データベースによっては 32kb くらいまでは
「大きい」と判断されずにすむこともあります。ラージオブジェクトは
テキストあるいはバイナリの両方の形式をとり得ます。
PDO でこのラージデータ型を扱うには、
PDOStatement::bindParam や
PDOStatement::bindColumn のコール時に
型コードとして
例1 データベース内の画像を表示する この例では $lob という名前の変数に LOB をバインドし、 fpassthru を使用してそれをブラウザに送信します LOB はストリームで表されるので、 fgets、fread および stream_get_contents といった関数を 使用することができます。
例2 画像をデータベースに挿入する この例では、ファイルをオープンしてそのハンドルを PDO に渡し、 LOB としてデータベースに挿入します。PDO は、データベースに応じた もっとも適切な方法でデータを取得します。
例3 画像をデータベースに挿入する: Oracle Oracle は、ファイルから LOB を挿入する方法が他とは少し違います。 また、必ずトランザクション内で挿入しなければなりません。 それ以外の場合、新しく挿入された LOB は長さゼロとなり、クエリの 実行時に暗黙的にコミットされます。
|