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

Reply via email to