我应该对MySQL TEXT类型使用PDO PARAM_LOB或PARAM_STR吗? [英] Should I use PDO PARAM_LOB or PARAM_STR for MySQL TEXT type?

查看:214
本文介绍了我应该对MySQL TEXT类型使用PDO PARAM_LOB或PARAM_STR吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我应该对MySQL TEXT类型使用PDO PARAM_LOB还是PARAM_STR吗?我希望我的数据能超过5000个字符.

Should I use PDO PARAM_LOB or PARAM_STR for MySQL TEXT type? I expect my data to be 5000+ characters.

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

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

推荐答案

如果您要使用大块数据(如您在用例中所述),那么可以-我会使用PDO::PARAM_LOB使用数据流来处理数据.

If you're going to be using large chunks of data, as you have mentioned in your use-case, then yes -- I would use PDO::PARAM_LOB to manipulate your data using data streams.

根据 PHP文档:

在您的应用程序中的某个时候,您可能会发现您需要 将大"数据存储在数据库中.大通常表示大约4kb 或更多",尽管某些数据库之前可以愉快地处理高达32kb的数据 数据变大.大对象可以是文本形式也可以是二进制形式 自然. PDO允许您通过使用 PDOStatement :: bindParam()中的PDO :: PARAM_LOB类型代码或 PDOStatement :: bindColumn()调用. PDO :: PARAM_LOB告诉PDO映射 数据作为流,以便您可以使用PHP流进行操作 API.

At some point in your application, you might find that you need to store "large" data in your database. Large typically means "around 4kb or more", although some databases can happily handle up to 32kb before data becomes "large". Large objects can be either textual or binary in nature. PDO allows you to work with this large data type by using the PDO::PARAM_LOB type code in your PDOStatement::bindParam() or PDOStatement::bindColumn() calls. PDO::PARAM_LOB tells PDO to map the data as a stream, so that you can manipulate it using the 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);

这篇关于我应该对MySQL TEXT类型使用PDO PARAM_LOB或PARAM_STR吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆