PHP PDOラージ・オブジェクト(LOB)

一度アプリケーションは、あなたが「大」のデータを格納するデータベースで必要になる場合があります。

データベース内のデータの一部は「ビッグ」を達成するために簡単に前に32キロバイトまで対応することができますが、「大」は、通常、「4キロバイト以上を中心に」を意味します。これは、テキストや自然の中でバイナリラージオブジェクトかもしれません。

PDO()あるいはPDOStatement :: bindColumn()を使用)はPDOStatementを呼び出す:: bindParam :: PARAM_LOB PDOタイプコードは、大規模なデータ型を使用できます。

PDO :: PARAM_LOBが動作するPHPストリームAPIを使用することができるようにするために、ストリームとしてデータをマッピングするためにPDOを伝えます。

データベースから画像を表示します

次の例では、LOB変数$ LOBにバインドされ、そして()fpassthruとブラウザに送信します。LOBので、同様の関数fgets()、関数fread()とstream_get_contentsのストリームを表すので()この関数は、その上に使用することができます。

<?PHPの
$デシベル=新しいPDO( 'ODBC:SAMPLE'、 'db2inst1の'、 'IBMDB2'); 
$ STMT = $ DB->( "のContentTypeを選択し、ID =画像から画像データ?")を調製。
$ stmt->実行(配列($ _ GET [ 'ID'])); 
$ stmt-> bindColumn(1、$タイプ、PDO :: PARAM_STR、256); 
$ stmt-> bindColumn(2、$ロブ、PDO :: PARAM_LOB)。
$ stmt->(PDO :: FETCH_BOUND)をフェッチ。

ヘッダ( "のContent-Type:$タイプ"); 
fpassthru($ロブ)。
?>

  大理石のVブロック

データベースに画像を挿入

次の例では、ファイルを開き、ファイルハンドルは、PDOはLOBが挿入されているん可決しました。できるだけ多くのPDOファイルの内容を取得するための最も効率的な方法でデータベースように。

<?PHP 
$ DB =新しい新しいPDO( 'ODBC:SAMPLE' 'IBMDB2に'、 'はdb2inst1'、); 
$ stmtは= $ DB-> PREPARE(「イメージ。INSERT INTO(ID、contentTypeの、ImageDataを)の値(,, ?? ?)「); 
$は、上記のidは=()が挙げget_new_id; //新しいID割り当てるために関数を呼び出す

//ファイルアップロードを扱うと仮定し
、//詳細については、PHPマニュアルに記載されています

($ fpのの=のfopenの$ _ FILES [ 'ファイル'] [ 'tmp_name']、 'RB'); 

$ stmt-> bindParam(1、$ ID); 
$ stmt-> bindParam(2、$ _FILES [ 'ファイル'] [ 'タイプ'])に、
$ stmt-> bindParam(3、$ fpは、PDO :: PARAM_LOB); 

$ DB->のbeginTransaction(); 
$ stmt->実行(); 
$ DB->コミット(); 
?>

  

画像をデータベースに挿入します。Oracleを

ファイルからLOBを挿入するために、Oracleは少し異なります。そうでない場合は、新たにクエリが暗黙のうちに提出された0 LOBの長さになります実行されたときに挿入さにつながり、トランザクションの後に挿入する必要があります。

<?PHP 
の$デシベル=新しい新しいPDO( 'OCI:'、 'スコット'、 'タイガー'); 
$ stmtは= $ DB->(PREPARE "INSERT INTOロイヤリティーフリー(上記、contentTypeの、ImageDataを)のIDを述べた。" 
「VALUES(? ?、EMPTY_BLOB())のImageDataたRETURNING INTO「);?
$ get_new_id上記ID =(); //新しいID割り当てるために関数を呼び出す

//ファイルアップロードを扱う前提とし
//あなたは、PHPのドキュメントでより多くの情報を見つけることができます

; FPはのfopenの$($ _ FILES [ 'ファイル'] [ 'tmp_name']、 'RB')= 

(1、$ ID)bindParamに$ stmt-を> 
bindParam(2、$ _FILES [ 'ファイル']に> $ stmt- )[ 'タイプの']; 
$ stmt-> bindParam(3、$ fpは、PDO :: PARAM_LOB); 

$ stmt->のbeginTransaction(); 
$ stmt->実行(); 
$ stmt->コミット(); 
?>

  

 

おすすめ

転載: www.cnblogs.com/furuihua/p/11713933.html