I’m using php 7.0.20 and the latest version 2.0.12 of Yii, working with Oracle 11g.
When I try to insert a record with the code below.
$str_more_than_4000 = 'UGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlUGx1Z2luIHNvdXJjZSBpcyBBpcyBBpcyBBpcyBBpcyBBpcyBBpcyBBpcyB';
//insert
Yii::$app->getDb()->createCommand()->insert('TABLE_A',['CLOB_COLUMN'=>$str_more_than_4000])->execute();
//batchInsert
Yii::$app->getDb()->createCommand()->batchInsert('TABLE_A',['CLOB_COLUMN'],[[$str_more_than_4000]])->execute();
After execute we will generate the error:
Error Info: Array
(
[0] => HY000
[1] => 1704
[2] => OCIStmtExecute: ORA-01704: string literal too long.
(ext\pdo_oci\oci_statement.c:148)
)
After google, I know use pdo and bindParam can success insert long string.
$pdo = Yii::$app->db->pdo;
$stmt = $pdo->prepare("INSERT INTO TABLE_A (CLOB_COLUMN) VALUES (:p1)");
$stmt->bindParam(":p1", $str_more_than_4000 , \PDO::PARAM_STR, strlen($str_more_than_4000 )); //ok
//$stmt->bindValue(":p1", $str_more_than_4000 , \PDO::PARAM_STR);//fail
$stmt->execute()
Can anybody give some suggestion on insert long string(more than 4000) with Yii?