bug_64037.phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. --TEST--
  2. Bug #64037 Firebird return wrong value for numeric field
  3. --SKIPIF--
  4. <?php extension_loaded("pdo_firebird") or die("skip"); ?>
  5. <?php function_exists("ibase_query") or die("skip"); ?>
  6. --FILE--
  7. <?php
  8. require("testdb.inc");
  9. $dbh = new PDO("firebird:dbname=$test_base",$user,$password) or die;
  10. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  11. $value = '2';
  12. @$dbh->exec('DROP TABLE price');
  13. $dbh->exec("CREATE TABLE PRICE (ID INTEGER NOT NULL, TEXT VARCHAR(10), COST NUMERIC(15, 2))");
  14. $dbh->exec("INSERT INTO PRICE (ID, TEXT, COST) VALUES (1, 'test', -1.0)");
  15. $dbh->exec("INSERT INTO PRICE (ID, TEXT, COST) VALUES (2, 'test', -0.99)");
  16. $dbh->exec("INSERT INTO PRICE (ID, TEXT, COST) VALUES (3, 'test', -1.01)");
  17. $dbh->commit();
  18. $query = "SELECT * from price order by ID";
  19. $stmt = $dbh->prepare($query);
  20. $stmt->execute();
  21. $rows = $stmt->fetchAll();
  22. var_dump($rows[0]['COST']);
  23. var_dump($rows[1]['COST']);
  24. var_dump($rows[2]['COST']);
  25. $stmt = $dbh->prepare('DELETE FROM price');
  26. $stmt->execute();
  27. $dbh->commit();
  28. $dbh->exec('DROP TABLE price');
  29. unset($stmt);
  30. unset($dbh);
  31. ?>
  32. --EXPECT--
  33. string(5) "-1.00"
  34. string(5) "-0.99"
  35. string(5) "-1.01"