bug_73234.phpt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. --TEST--
  2. PDO Common: Bug #73234 (Emulated statements let value dictate parameter type)
  3. --EXTENSIONS--
  4. pdo
  5. --SKIPIF--
  6. <?php
  7. $dir = getenv('REDIR_TEST_DIR');
  8. if (false == $dir) die('skip no driver');
  9. require_once $dir . 'pdo_test.inc';
  10. PDOTest::skip();
  11. $db = PDOTest::factory();
  12. if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') {
  13. die("xfail PDO::PARAM_NULL is not honored by OCI driver, related with bug #81586");
  14. }
  15. ?>
  16. --FILE--
  17. <?php
  18. if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
  19. require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  20. $db = PDOTest::factory();
  21. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
  22. switch ($db->getAttribute(PDO::ATTR_DRIVER_NAME)) {
  23. case 'dblib':
  24. $sql = 'CREATE TABLE test(id INT NULL)';
  25. break;
  26. default:
  27. $sql = 'CREATE TABLE test(id INT)';
  28. break;
  29. }
  30. $db->exec($sql);
  31. $stmt = $db->prepare('INSERT INTO test VALUES(:value)');
  32. $stmt->bindValue(':value', 0, PDO::PARAM_NULL);
  33. $stmt->execute();
  34. $stmt->bindValue(':value', null, PDO::PARAM_NULL);
  35. $stmt->execute();
  36. $stmt = $db->query('SELECT * FROM test');
  37. var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
  38. ?>
  39. --EXPECT--
  40. array(2) {
  41. [0]=>
  42. array(1) {
  43. ["id"]=>
  44. NULL
  45. }
  46. [1]=>
  47. array(1) {
  48. ["id"]=>
  49. NULL
  50. }
  51. }