一度アプリケーションは、あなたが「大」のデータを格納するデータベースで必要になる場合があります。
データベース内のデータの一部は「ビッグ」を達成するために簡単に前に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($ロブ)。 ?>
データベースに画像を挿入
次の例では、ファイルを開き、ファイルハンドルは、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->コミット(); ?>