Closed sj-i closed 3 years ago
Description:
------------
PDOStatement::bindColumn($idx, $var, PDO::PARAM_LOB) for SELECT query makes $var a string with the BLOB Data rather than a stream, for both MySQL and SQLite.
Reproduce code:
---------------
$id = (int)$_REQUEST['book'];
$stmt = $conn->prepare("SELECT coverMime, coverImage FROM books WHERE id=$id");
$stmt->execute();
$stmt->bindColumn(1, $mime);
$stmt->bindColumn(2, $image, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
var_dump($image);
Expected result:
----------------
Resource #1
Actual result:
--------------
String(792) {GIF89a...}
https://www.php.net/manual/ja/pdo.lobs.php PDO::PARAM_LOB でラージオブジェクト指定によりストリームが手に入る筈のところで、MySQL and SQLite 両方で文字列が手に入るという問題
こんだけ長いと逆に直したら後方互換性問題になるのでは、と思ったら nikic の人がアサインされてたのでこれは放置でよさそう