#43752 [NEW]: PDO bindParam Mangles bound objects

From: Date: Fri, 04 Jan 2008 18:33:02 +0000
Subject: #43752 [NEW]: PDO bindParam Mangles bound objects
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-121042@lists.php.net to get a copy of this message
From: motoma at gmail dot com Operating system: Windows PHP version: 5.2CVS-2008-01-04 (snap) PHP Bug Type: PDO related Bug description: PDO bindParam Mangles bound objects Description: ------------ I built a class with a __toString() member function. When I pass an instance of this class to bindParam(), the object is overwritten with the result of __toString(). The result from the code sample suggests that bindParam is overwriting the value of the object with the object's __toString() value. Reproduce code: --------------- <?php class test { private $a = 1; public function __toString() { return strval($this->a); } } $db = new PDO('mysql:host=localhost;dbname=test', 'root', '', array(PDO::ATTR_PERSISTENT => true)); $obj = new test(); $prepared = $db->prepare('SELECT * FROM table1 WHERE 1 = :test'); var_dump($obj); $prepared->bindParam('test', $obj); var_dump($obj); ?> Expected result: ---------------- object(test)#2 (1) { ["a:private"]=> int(1) } object(test)#2 (1) { ["a:private"]=> int(1) } Actual result: -------------- object(test)#2 (1) { ["a:private"]=> int(1) } string(1) "1" -- Edit bug report at http://bugs.php.net/?id=43752&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=43752&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=43752&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=43752&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=43752&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=43752&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=43752&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=43752&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=43752&r=needscript Try newer version: http://bugs.php.net/fix.php?id=43752&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=43752&r=support Expected behavior: http://bugs.php.net/fix.php?id=43752&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=43752&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=43752&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=43752&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=43752&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=43752&r=dst IIS Stability: http://bugs.php.net/fix.php?id=43752&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=43752&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=43752&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=43752&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=43752&r=mysqlcfg

« previous php.bugs (#121042) next »