Bug #52637 [Opn]: bug in prepare statement
| From: | angelo dot courtel at laposte dot net | Date: | Fri, 10 Sep 2010 12:38:11 +0000 |
| Subject: | Bug #52637 [Opn]: bug in prepare statement | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-154242@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=52637&edit=1
ID: 52637
User updated by: angelo dot courtel at laposte dot net
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:
I ve commented only first line of my sql statement, not entire
statement.
Previous Comments:
------------------------------------------------------------------------
[2010-09-10 13:40:41] uw@php.net
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.
------------------------------------------------------------------------
[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] uw@php.net
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
------------------------------------------------------------------------
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