ID: 36561 Updated by: [EMAIL PROTECTED] Reported By: travis at raybold dot com -Status: Open +Status: Assigned Bug Type: PDO related Operating System: Windows XP PHP Version: 5.2.4 -Assigned To: +Assigned To: fmk New Comment:
Assigned to the maintainer. Previous Comments: ------------------------------------------------------------------------ [2007-08-31 07:33:12] [EMAIL PROTECTED] Very nice that you didn't bother trying with the RCs.. ------------------------------------------------------------------------ [2007-08-30 16:20:54] travis at raybold dot com the problem still occurs on: PHP 5.2.4 (cli) (built: Aug 30 2007 07:06:31) ------------------------------------------------------------------------ [2007-06-22 17:50:11] blohr at triad dot rr dot com This bug affects my app, too. I'm using PHP 5.2.3 on Windows XP Pro SP2, under both IIS 5.1 and Apache 2.2, with SQL Server 2005 Express. I don't know if it'll help or not, but here's some more reproduce code. Just fix the PDO DSN string to something valid. <?php $db = new PDO("odbc:dsn=$odbcDsn;uid=$user;pwd=$pass"); $createTable = 'CREATE TABLE ##test ( intCol int, textCol varchar(20) )'; $createTable2 = 'CREATE TABLE ##test2 ( intCol2 int, textCol2 varchar(20) )'; $db->exec($createTable); $db->exec($createTable2); $ins = $db->prepare('INSERT INTO ##test (intCol, textCol) VALUES (:i, :t)'); $ins->execute(array('i'=>1, 't'=>'A String')); $ins2 = $db->prepare('INSERT INTO ##test2 (intCol2, textCol2) VALUES (:i, :t)'); $ins2->execute(array('i'=>1, 't'=>'Another String')); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE textCol2 = :t)'); $sel->execute(array('t'=>'Another String')) or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE intCol2 = :i)'); $sel->execute(array('i'=>1)) or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE textCol2 = :t)'); $sel->bindValue('t', 'Another String'); $sel->execute() or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE intCol2 = :i)'); $sel->bindValue('i', 1); $sel->execute() or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE textCol2 = :t)'); $sel->bindValue('t', 'Another String', PDO::PARAM_STR); $sel->execute() or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE intCol2 = :i)'); $sel->bindValue('i', 1, PDO::PARAM_INT); $sel->execute() or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE textCol2 = :t)'); $t = 'Another String'; $sel->bindParam('t', $t, PDO::PARAM_STR); $sel->execute() or var_dump($sel->errorInfo()); $sel = $db->prepare('SELECT * FROM ##test WHERE intCol = (SELECT intCol2 FROM ##test2 WHERE intCol2 = :i)'); $i = 1; $sel->bindParam('i', $i, PDO::PARAM_INT); $sel->execute() or var_dump($sel->errorInfo()); ?> ------------------------------------------------------------------------ [2007-05-24 20:50:41] travis at raybold dot com Hey Wez, I never saw the feedback til I stumbled on it today, and clearly have been able to work around this, but it does keep stopping me. It happens exactly the same if I omit the PDO::PARAM_INT as the final parameter. I am still using the branched version you gave me... I'd be happy to test with the latest if you think it might be fixed there. --Travis ------------------------------------------------------------------------ [2006-04-09 07:57:01] [EMAIL PROTECTED] Try using: $oStatement->bindParam(':TestID', $iTestID); instead of: $oStatement->bindParam(':TestID', $iTestID,PDO::PARAM_INT ); The latter is implicitly binding for output, which might be part of your problem. ------------------------------------------------------------------------ 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/36561 -- Edit this bug report at http://bugs.php.net/?id=36561&edit=1