Edit report at http://bugs.php.net/bug.php?id=52637&edit=1

 ID:                 52637
 Updated by:         [email protected]
 Reported by:        angelo dot courtel at laposte dot net
 Summary:            bug in prepare statement
 Status:             Open
 Type:               Bug
 Package:            PDO related
 Operating System:   Debian Lenny
 PHP Version:        5.2.6-1+lenny6
 Block user comment: N

 New Comment:

Your "//works fine" code sample should do exactly nothing because there
is no SQL statement run. The SQL statement is commented out. No
"predifining" of any kind should happen.


Previous Comments:
------------------------------------------------------------------------
[2010-09-07 21:44:13] angelo dot courtel at laposte dot net

Well, but I want find a way to use a prepared statement, without need to


predeclare all paramètres on a sql comment ! It s not a very optimized
solution.

------------------------------------------------------------------------
[2010-09-06 15:13:59] [email protected]

Well, if you comment out your SQL statement, it should work fine
regardless what it may look like... "-- " starts a single line SQL
comment.

------------------------------------------------------------------------
[2010-08-19 10:06:12] angelo dot courtel at laposte dot net

A little example for explain my bug :

This source works correctly on an Windows WAMP PHP5.2.6

But not on Debian :(



<?php

//running on PHP Version 5.2.6-1+lenny6

try {

    $dbh = new
PDO('pgsql:host=localhost;port=5432;dbname=db;user=user;password=pass');

} catch (PDOException $e) {

    echo 'Connexion failed : ' . $e->getMessage();exit;

}

//list or parameters

$id = 40;

$id2 = 40;

$param = array (':id' => $id, ':id2' => $id2);



//query failed

$sReq = '

        select * from t1

        left join t2 on t2.id = :id

        left join t3 on t3.id = :id

        where t1.id = :id2';



$rTest1 = $dbh->prepare($sReq);

if ($rTest1->execute($param))

        echo 'OK';

else

        var_dump($rTest1->errorInfo());

// --> array(3) { [0]=>  string(5) "42P18" [1]=>  int(7) [2]=> 
string(69) "ERREUR: n'a pas pu déterminer le type de données du
paramètres $2" } 



$rTest2 = $dbh->prepare($sReq);

$rTest2->bindParam(':id', $id);

$rTest2->bindParam(':id2', $id2);

if ($rTest2->execute())

        echo 'OK';

else

        var_dump($rTest2->errorInfo());

// --> array(3) { [0]=>  string(5) "42P18" [1]=>  int(7) [2]=> 
string(69) "ERREUR: n'a pas pu déterminer le type de données du
paramètres $2" } 



//query success

$sReq = '

        -- :id :id2

        select * from t1

        left join t2 on t2.id = :id

        left join t3 on t3.id = :id

        where t1.id = :id2';



$rTest3 = $dbh->prepare($sReq);

if ($rTest3->execute($param))

        echo 'OK';

else

        var_dump($rTest3->errorInfo());

// --> OK



$rTest4 = $dbh->prepare($sReq);

$rTest4->bindParam(':id', $id);

$rTest4->bindParam(':id2', $id2);

if ($rTest4->execute())

        echo 'OK';

else

        var_dump($rTest4->errorInfo());

// --> OK

?>

------------------------------------------------------------------------
[2010-08-19 06:55:59] angelo dot courtel at laposte dot net

Hi, I use PostGreSql Pdo driver

Thks

------------------------------------------------------------------------
[2010-08-19 01:17:32] [email protected]

What PDO driver are you using?

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=52637


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52637&edit=1

Reply via email to