|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #41831 pdo_sqlite changes resource to text
Submitted: 2007-06-27 21:18 UTC Modified: 2007-08-01 22:45 UTC
From: bennovandenberg at gmail dot com Assigned: iliaa (profile)
Status: Closed Package: PDO related
PHP Version: 5.2.3 OS: FreeBSD 6.2
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: bennovandenberg at gmail dot com
New email:
PHP Version: OS:


 [2007-06-27 21:18 UTC] bennovandenberg at gmail dot com
pdo_sqlite replaces a resource variable with the content of the file as text. This happens after the execute command. I tried the same with mysql, but with pdo_mysql it still stays a resource. So I guess the problem is with pdo_sqlite. (or its normal behavior to change the resource to text, but then pdo_mysql is wrong)

Reproduce code:
$pdo = new PDO("sqlite:/somepath/mydb.sq3");
$filename = "test";
$imagehandle = fopen($imagelocation, 'r');
// is_resource($imagehandle) == true
$stmt = $pdo->prepare("INSERT INTO Images (filename, image_data) VALUES (?,?);");
$stmt->bindParam(1, $filename);
$stmt->bindParam(2, $imagehandle, PDO::PARAM_LOB);
// is_resource($imagehandle) == false

Expected result:
After the execute() I espect the $imagehandle to still be a resource.

Actual result:
$imagehandle has become a string with the content of the image.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2007-06-27 21:27 UTC]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.

 [2007-06-28 12:57 UTC] bennovandenberg at gmail dot com
I've created a complete script to demonstrate the bug. It's too big to upload here, so I've uploaded it to my own webserver. The only things that need to be changed are the database in use, the settings for the database and a location of a image (any file will do actually). Also if a other database then mysql or sqlite are used, then $auto needs to be updated to include the auto increment keyword (mysql and sqlite use different ones).

The url:

With sqlite
Outcome expected is:
It's a resource!
It's a resource!

Actual result:
It's a resource!
It's not a resource
 [2007-06-29 12:09 UTC]
The server is not available. Please try to make a SHORT but COMPLETE reproduce case, so that there would be no need to put it somewhere.
 [2007-06-29 15:17 UTC] bennovandenberg at gmail dot com
The site works fine here, but here it is a slightly SHORTER and COMPLETE version...

$pdo = new PDO("sqlite:/somedatabase.sq3"); 
$imagelocation = "/someimage"; // or any other file

$pdo->exec("CREATE TABLE Images (id INTEGER PRIMARY KEY AUTOINCREMENT, filename VARCHAR(50), image_data LONGBLOB)" );

$filename = "test";
$imagehandle = fopen($imagelocation, 'r');

if (is_resource($imagehandle))
	echo "It's a resource!<br />";
	echo "It's not a resource<br />";

$stmt = $pdo->prepare("INSERT INTO Images (filename, image_data) VALUES (?,?);");
$stmt->bindParam(1, $filename);
$stmt->bindParam(2, $imagehandle, PDO::PARAM_LOB);

if (is_resource($imagehandle))
	echo "It's a resource!<br />";
	echo "It's not a resource<br />";
 [2007-08-01 22:45 UTC]
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
Thank you for the report, and for helping us make PHP better.

PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Tue Mar 28 03:03:37 2023 UTC