php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #47159 Creating a prepared statement without executing it makes database unclosable
Submitted: 2009-01-20 03:38 UTC Modified: 2009-01-20 09:59 UTC
From: pcdinh at gmail dot com Assigned:
Status: Closed Package: SQLite related
PHP Version: 5.3.0alpha3 OS: Windows XP SP3
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 you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: pcdinh at gmail dot com
New email:
PHP Version: OS:

 

 [2009-01-20 03:38 UTC] pcdinh at gmail dot com
Description:
------------
A database connection to SQLite3 can not be closed if I create a prepared statement without executing it.

Of course, I have already closed that statement explicitly before closing the database connection handler.

I had this warning: Unable to close due to unfinalised statements. It means that an invocation to close() on a statement handler does not work.

Reproduce code:
---------------
<?php

// By default, open uses SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.
$db   = new SQLite3('./test.db');

$sql  = 'SELECT 1';

$stmt = $db->prepare($sql);

// Commenting out the line intentionally
// $rs = $stmt->execute();

if (true === $stmt->close())
{
    echo 'Statement is already closed but in this case it is not. ';
}

if (false === $db->close())
{
    echo 'But database connection can not be closed due to an error: '.$db->lastErrorMsg();
}
?>

Expected result:
----------------
Database connection should be closed as usual

Actual result:
--------------
The error message:

Statement is already closed but in this case it is not.
Warning: SQLite3::close() [sqlite3.close]: Unable to close database: 5, Unable to close due to unfinalised statements in D:\wvbsrc\repos\pone\trunk\tests\Plugin\test2_sqlite3.php on line 18
But database connection can not be closed due to an error: Unable to close due to unfinalised statements

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-01-20 09:59 UTC] scottmac@php.net
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
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

This is loosely related to bug #47145 which I fixed last night.

I've however checked all the prepare calls now to make sure things are free'd
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Dec 27 05:01:27 2024 UTC