Php Mysql PDO获取时的最大LONGBLOB数据长度
我在LONGBLOB类型的Mysql字段中插入了大约1.1MB的数据。这与LONGBLOB字段支持的最大长度相差甚远 插页似乎起作用了 如果在插入之前执行Php Mysql PDO获取时的最大LONGBLOB数据长度,php,mysql,pdo,Php,Mysql,Pdo,我在LONGBLOB类型的Mysql字段中插入了大约1.1MB的数据。这与LONGBLOB字段支持的最大长度相差甚远 插页似乎起作用了 如果在插入之前执行strlen($data),则返回1059245 如果在插入后执行查询: SELECT OCTET_LENGTH(`data`)... 它返回1059245 但如果我这样做了 $stmt = $pdo->prepare("SELECT `data` FROM `tbl_mytable` WHERE `id` = :id LIMIT 1"
strlen($data)
,则返回1059245
如果在插入后执行查询:
SELECT OCTET_LENGTH(`data`)...
它返回1059245
但如果我这样做了
$stmt = $pdo->prepare("SELECT `data` FROM `tbl_mytable` WHERE `id` = :id LIMIT 1");
$stmt->bindValue(":id", $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
echo strlen($data['data']);
它返回1048576
我的数据似乎在1048576字节后被剪切
为什么在执行查询时只接收数据的前1048576字节
它是一个PDO配置,类似于max_fetch_length 默认情况下是1MB的MYSQL\u ATTR\u MAX\u BUFFER\u大小 这解决了问题:
$pdo->setAttribute(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1024*1024*50); // 50 MB
出于某种原因,我必须使用可选的第4个参数在构造函数中设置它-它不能直接使用上述代码。