Bug #40913 [Com]: PDO_MYSQL: PDO::PARAM_LOB does not bind to a stream for fetching a BLOB

From: Date: Thu, 27 Mar 2014 22:16:06 +0000
Subject: Bug #40913 [Com]: PDO_MYSQL: PDO::PARAM_LOB does not bind to a stream for fetching a BLOB
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-184939@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=40913&edit=1 ID: 40913 Comment by: benjamin dot morel at strictcoding dot co dot uk Reported by: dennis at inmarket dot lviv dot ua Summary: PDO_MYSQL: PDO::PARAM_LOB does not bind to a stream for fetching a BLOB Status: Re-Opened Type: Bug Package: PDO MySQL Operating System: Win XP PHP Version: 5.2.6 Block user comment: N Private report: N New Comment: This must be the oldest unsolved PHP bug: 7 years! Still broken with PHP 5.5.10. Could a lead developer comment on this please? Previous Comments: ------------------------------------------------------------------------ [2014-03-19 13:13:09] romanoaugusto88 at gmail dot com Still in PHP 5.5.9 ------------------------------------------------------------------------ [2014-01-24 09:52:11] heruan at aldu dot net Still present in PHP 5.4.9 ------------------------------------------------------------------------ [2013-05-31 05:25:33] ssufficool@php.net PGSQL binds to a stream object for a LOB. Which PDO driver is this referring to? ------------------------------------------------------------------------ [2012-11-07 12:15:02] johannes@php.net The implementation for this is broken in PDO core. For PGSQL there is a workaround documented: Since information about the columns is not always available to PDO until the statement is executed, portable applications should call this function after PDOStatement::execute(). However, to be able to bind a LOB column as a stream when using the PgSQL driver, applications should call this method before calling PDOStatement::execute(), otherwise the large object OID will be returned as an integer. http://www.php.net/manual/en/pdostatement.bindcolumn.php This works neither works with sqlite nor mysql drivers. After research I assume it won't work with other drivers either. The LOB-handling happens in the param_hook for PDO_PARAM_EVT_EXEC_PRE. But this event only happens if there are bound parameters during execute. But result columns are bound after execute ... The support for this feature has do be redesigned in PDO core ... as MySQL has no native stream support I don't support adding a hack for this. ------------------------------------------------------------------------ [2012-11-07 08:55:18] vicrry at yahoo dot com dot hk As of PHP 5.3.15, this bug still exists. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=40913 -- Edit this bug report at https://bugs.php.net/bug.php?id=40913&edit=1

« previous php.bugs (#184939) next »