Edit report at http://bugs.php.net/bug.php?id=53475&edit=1
ID: 53475 Updated by: [email protected] Reported by: germanh1982 at gmail dot com Summary: Query with prepared statement -Status: Open +Status: Bogus Type: Bug Package: PDO related Operating System: Linux dell 2.6.35-gentoo-r12 #3 PHP Version: 5.3.3 Block user comment: N Private report: N New Comment: $q->bindValue(":param", 15, PDO::PARAM_INT); Previous Comments: ------------------------------------------------------------------------ [2010-12-05 06:00:00] germanh1982 at gmail dot com Description: ------------ I have the following database with two rows (simplified just to show the issue): sqlite> select * from bl; addr tstamp ---- ------------- 1 10 2 20 when running the (prepared) query: "select * from bl where 30 - tstamp > :param AND :param = :param", with ":param" bound to the value 15, I get no rows as result. I would expect to receive the row with tstamp = 10 as correct result (as I do if I run the query with the sqlite3 command line client). SQlite version: 3.7.2 Test script: --------------- $ sqlite3 test.sqlite sqlite> CREATE TABLE bl (address text unique, tstamp integer not null); $ sqlite3 test.sqlite SQLite version 3.7.2 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table bl (address text unique, tstamp integer not null); sqlite> insert into bl values (1,10); sqlite> insert into bl values (2,20); ===== <?php $db = new PDO("sqlite:test.sqlite"); $q = $db->prepare("select * from bl where 30 - tstamp > :param AND :param = :param"); $q->bindValue(":param", 15); $q->execute(); print_r($q->fetchAll(PDO::FETCH_ASSOC)); ?> ===== Expected result: ---------------- Running the following script, on an sqlite3 shell, I get the following (expected output): ===== sqlite> select * from bl where 30 - tstamp > 15 AND 15 = 15; addr tstamp ---- ------------- 1 10 ===== The same happens running the following script (note the only difference with the non-working script is that I replaced the first instance of ":param" with the corresponding hard-coded value): ===== $q = $db->prepare("select * from bl where 30 - tstamp > 15 AND :param = :param"); $q->bindValue(":param", 15); $q->execute(); print_r($q->fetchAll(PDO::FETCH_ASSOC)); ===== Actual result: -------------- See description. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53475&edit=1
