2016-04-19 4 views
1

TEXTタイプのPDO PARAM_LOBまたはPARAM_STRを使用する必要がありますか?私は自分のデータが5000文字以上であることを期待しています。MySQL TEXT型にPDO PARAM_LOBまたはPARAM_STRを使用する必要がありますか?

$stmt->bindParam(':notes', $notes, PDO::PARAM_STR); 

OR

$stmt->bindParam(':notes', $notes, PDO::PARAM_LOB); 
+0

TEXT型とBLOB型にLOBを使用します。 'PARAM_STR'を使用すると、PHPはオブジェクトの最大サイズに対応するために十分なメモリを割り当てようとします.LONGTEXT/LONGBLOBの場合は4GBです。 – Sammitch

答えて

2

あなたのユースケースで述べてきたように、あなたは、データの大きなチャンクを使用するつもりなら、[はい - 私はあなたのデータを操作するためにPDO::PARAM_LOBを使用しますデータストリームを使用します。 PHP documentationによると

:あなたのアプリケーションの中でいくつかの点で

、あなたがあなたのデータベースに 店「大」のデータに必要なことがあります。大型の場合、通常「約4kb 以上」を意味しますが、 データが「大」になる前に、一部のデータベースで最大32kbまでうまく処理できます。大きなオブジェクトは、 の性質のテキストまたはバイナリのいずれかです。 PDOSでは、PDOStatement :: bindParam()または PDOStatement :: bindColumn()呼び出しで、 PDO :: PARAM_LOBタイプコードを使用して、この大きなデータ型を扱うことができます。 PDO :: PARAM_LOBは、 データをストリームとしてマップするようにPDOに指示します。そのため、PHPストリーム APIを使用してデータを操作できます。

そして、このようにそれを使用した:それはどんな違いがありませんちょうど5キロバイトなどのテキストのように微量のために

<?php 
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2'); 
$stmt = $db->prepare("select contenttype, imagedata from images where id=?"); 
$stmt->execute(array($_GET['id'])); 
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256); 
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB); 
$stmt->fetch(PDO::FETCH_BOUND); 

header("Content-Type: $type"); 
fpassthru($lob); 
0

テキストが1000000文字近くになると気になることがあります。この量に対処する必要がないかぎり、そのことについてまったく心配しないでください。

関連する問題