From:             
Operating system: Linux i386
PHP version:      5.3SVN-2011-02-15 (SVN)
Package:          PDO related
Bug Type:         Bug
Bug description:PDO prepared statements using SQLite can't bind non-text values 
in expressions

Description:
------------
This report is an addition to / repost of the bug reported in #45259 from
2008. I replied on that one a few weeks ago but nobody seemed to take
notice.

This bug seems to also have been reported in bug #53475 (2010).



It concerns: When using PDO with the SQLite backend and prepared SQL
statements, it appears to be impossible to bind anything but a text or NULL
value to a parameter.



As a remark I would like to mention, binded values other than string and
NULL types are cast to a string automatically.



The bug is explained quite well in bug #45259. And I've added a patch only
for the 5.3 branch as that has support for the PHP_PARAM_ZVAL type (which
5.2 lacks apparently). The current patch will not easily be backported to
5.2, I think.



I've tested the patch below with the svn commit I could grab today
(308350). It includes a couple of test cases which should cover the bug
quite well.

Test script:
---------------
$dbase = new PDO('sqlite::memory:');



$stmt = $dbase->prepare('SELECT 1=? AS result');

$stmt->execute(array(1));

echo '(INT == BOUNDINT)    = ', ($stmt->fetchColumn() == 1 ? 'true' :
'false'), PHP_EOL;



$stmt = $dbase->prepare('SELECT "1"=? AS result');

$stmt->execute(array(1));

echo '(STRING == BOUNDINT) = ', ($stmt->fetchColumn() == 1 ? 'true' :
'false'), PHP_EOL;

Expected result:
----------------
(INT == BOUNDINT)    = true

(STRING == BOUNDINT) = false

Actual result:
--------------
(INT == BOUNDINT)    = false

(STRING == BOUNDINT) = true

-- 
Edit bug report at http://bugs.php.net/bug.php?id=54023&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=54023&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=54023&r=trysnapshot53
Try a snapshot (trunk):              
http://bugs.php.net/fix.php?id=54023&r=trysnapshottrunk
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=54023&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=54023&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=54023&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=54023&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=54023&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=54023&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=54023&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=54023&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=54023&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=54023&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=54023&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=54023&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=54023&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=54023&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=54023&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=54023&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=54023&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=54023&r=mysqlcfg

Reply via email to