|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-07-10 02:35 UTC] siegmar at siegmar dot com dot br
Description:
------------
The "bindValue" and "bindParam" do not work for PDO Firebird if we use named parameters (:parameter) but do work for question marks parameters (?).
Reproduce code:
---------------
<?php
$connection = new PDO('firebird:dbname=localhost:C:\Firebird\EMPLOYEE.FDB', 'SYSDBA', 'masterkey');
$value = '2';
//$command = $connection->prepare('SELECT EMP_NO FROM EMPLOYEE WHERE EMP_NO = :empno');
//$command->bindParam(':empno', $value, PDO::PARAM_STR); // does not work
//$command->bindValue(':empno', $value, PDO::PARAM_STR); // does not work
$command = $connection->prepare('SELECT EMP_NO FROM EMPLOYEE WHERE EMP_NO = ?');
$command->bindParam('1', $value, PDO::PARAM_STR); // works
//$command->bindValue('1', $value, PDO::PARAM_STR); // works
$command->execute();
$dataset = $command->fetchAll();
foreach($dataset as $record)
echo $record[0] . "<br />";
?>
The same code works perfectly for MySQL.
Expected result:
----------------
Using the example database "EMPLOYEE.FDB" you sould see:
2
Actual result:
--------------
nothing
PatchesBug-48877-pdo-firebird_driver.c (last revision 2011-12-09 19:02 UTC by dabramov at american-appraisal dot com)Bug-48877-firebird_driver (last revision 2011-12-09 10:51 UTC by dabramov at american-appraisal dot com) Pull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 03:00:01 2025 UTC |
Try changing the :empno to just empno in bind* it is not expected or needed: $command = $connection->prepare('SELECT EMP_NO FROM EMPLOYEE WHERE EMP_NO = :empno'); $command->bindParam('empno', $value, PDO::PARAM_STR); // does not work $command->bindValue('empno', $value, PDO::PARAM_STR); // does not worktested and result was 2 cat test.php <?php $connection = new PDO('firebird:dbname=localhost:/var/lib/firebird/2.5/data/employee.fdb', 'SYSDBA', 'masterkey'); $value = '2'; $command = $connection->prepare('SELECT EMP_NO FROM EMPLOYEE WHERE EMP_NO = :empno'); $command->bindParam(':empno', $value, PDO::PARAM_STR); // does not work $command->bindValue(':empno', $value, PDO::PARAM_STR); // does not work #$command = $connection->prepare('SELECT EMP_NO FROM EMPLOYEE WHERE EMP_NO = ?'); #$command->bindParam('1', $value, PDO::PARAM_STR); // works //$command->bindValue('1', $value, PDO::PARAM_STR); // works $command->execute(); $dataset = $command->fetchAll(); foreach($dataset as $record) echo $record[0] . "<br />"; ?>