我应该将PDO PARAM_LOB或PARAM_STR用于MySQL TEXT类型吗?

时间:2016-04-19 16:51:56

标签: php mysql text pdo

我应该将PDO PARAM_LOBPARAM_STR用于MySQL TEXT类型吗?我希望我的数据是5000多个字符。

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

OR

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

2 个答案:

答案 0 :(得分:2)

如果您正在使用大块数据,正如您在用例中提到的那样,那么是 - 我会使用PDO::PARAM_LOB来使用数据流来处理您的数据。

根据PHP documentation

  

在您的应用程序的某个时刻,您可能会发现需要   商店"大"数据库中的数据。大型通常意味着大约4kb   或更多",尽管一些数据库之前可以愉快地处理高达32kb   数据变得很大"。大对象可以是文本的,也可以是二进制的   性质。 PDO允许您使用。使用此大型数据类型   您的PDOStatement :: bindParam()或中的PDO :: PARAM_LOB类型代码   PDOStatement :: bindColumn()调用。 PDO :: PARAM_LOB告诉PDO映射   数据作为流,以便您可以使用PHP Streams对其进行操作   API。

并像这样使用它:

<?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);

答案 1 :(得分:1)

对于只有5千字节的少量文本,它没有任何区别。

当您的文本接近1000000个字符时,您可能会开始担心。只要您不必处理这笔金额,就不要担心这些事情