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);
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);
あなたのユースケースで述べてきたように、あなたは、データの大きなチャンクを使用するつもりなら、[はい - 私はあなたのデータを操作するために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);
。
テキストが1000000文字近くになると気になることがあります。この量に対処する必要がないかぎり、そのことについてまったく心配しないでください。
TEXT型とBLOB型にLOBを使用します。 'PARAM_STR'を使用すると、PHPはオブジェクトの最大サイズに対応するために十分なメモリを割り当てようとします.LONGTEXT/LONGBLOBの場合は4GBです。 – Sammitch