Bug #52746 [Opn->Fbk]: PDO SQLite error "bind or column index out of range" with some placeholders
| From: | cmb@php.net | Date: | Mon, 24 Feb 2020 07:48:39 +0000 |
| Subject: | Bug #52746 [Opn->Fbk]: PDO SQLite error "bind or column index out of range" with some placeholders | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-225685@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=52746&edit=1
ID: 52746
Updated by: cmb@php.net
Reported by: damien at tournoud dot net
Summary: PDO SQLite error "bind or column index out of range"
with some placeholders
-Status: Open
+Status: Feedback
Type: Bug
Package: PDO SQLite
PHP Version: 5.3.3
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
I cannot reproduce this with current PHP 7.3 (Windows, bundled
libsqlite); can anybody else reproduce this with any of actively
supported PHP versions[1]?
[1] <https://www.php.net/supported-versions.php>
Previous Comments:
------------------------------------------------------------------------
[2010-08-31 11:33:16] damien at tournoud dot net
This seems to work properly with unnamed placeholders.
For named placeholders, it seems to only fail when the placeholder is part of a branch of the query
that is deadcode, and could potentially be removed by the optimizer:
FAILS: SELECT SUM(1) expression FROM (SELECT :value value FROM sqlite_master) my_table
PASS: SELECT SUM(value) expression FROM (SELECT :value value FROM sqlite_master) my_table
------------------------------------------------------------------------
[2010-08-31 11:15:22] damien at tournoud dot net
That's on Debian, so it is using the system library. I'm able to reproduce that behavior
on a wide range of PHP and SQLite versions:
PHP 5.2.6-1+lenny9 -- SQLite 3.5.9 (external)
PHP 5.3.2-0.dotdeb.2 -- SQLite 3.6.21 (external)
PHP trunk -- SQLite 3.7.0.1 (bundled)
------------------------------------------------------------------------
[2010-08-31 10:46:49] pajoye@php.net
hi Damien,
Do you use the bundled sqlite or a system version? If the latter, which version is it?
------------------------------------------------------------------------
[2010-08-30 20:20:28] damien at tournoud dot net
Description:
------------
The following snippet results in a PDOException with message "SQLSTATE[HY000]: General error:
25 bind or column index out of range".
For some reasons, relatively similar queries work (for example, without the aggregation, as in:
"SELECT * FROM (SELECT :value value FROM sqlite_master) my_table" or without the table as
in "SELECT COUNT(*) expression FROM (SELECT :value value) my_table").
Test script:
---------------
<?php
$db = new PDO('sqlite:/tmp/sqlite.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $db->prepare('SELECT COUNT(*) expression FROM (SELECT :value value FROM
sqlite_master) my_table');
$query->execute(array(':value' => 'my_value'));
?>
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=52746&edit=1