php oracle如何保存大段的文本,大家用oracle如何保存大段的文本?

在使用Yii2框架操作Oracle数据库时遇到CLOB类型字段无法正确保存长文本的问题,博主通过重写`oci_command`类解决了插入错误,但发现每次更新内容都会减少。文章深入探讨了这个问题,分析了可能的原因,并分享了修复方案。
摘要由CSDN通过智能技术生成

用clob保存大段的文本

if(!$this->validate()){

return false;

}

$model = new Article();

$model->TITLE = $this->TITLE;

$model->CID = $this->CID;

$model->CONTENT_DATA = $this->CONTENT_DATA; //CONTENT_DATA的类型为CLOB

$model->save();

会出现如下错误

SQLSTATE[HY000]: General error: 1461 OCIStmtExecute: ORA-01461: can bind a LONG value only for insert into a LONG column (/tmp/pdo_oci/oci_statement.c:159)

然后我重写了yii2中ocicommand这个类,修改的bindValues和bindPendingParams这个方法

protected function bindPendingParams()

{

foreach ($this->_pendParams as $name => $value) {

if(isset($value[2])){

$this->pdoStatement->bindParam($name, $value[0], $value[1], $value[2]);

}else{

$this->pdoStatement->bindParam($name, $value[0], $value[1]);

}

}

$this->_pendParams = [];

}

这样,再长的数据,都可以写入数据库,

但是每次更新,内容都会变少。。。

第一次写入

14e0033c4546d1e9b82c79a1bc4ad71d.png

更新后变成

b0171130a90ab1517abbfe6bf8a84ee4.png

再更新会变的更少。。。。

实在无法理解。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值