pdo_024.phpt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. --TEST--
  2. PDO Common: assert that bindParam does not modify parameter
  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. ?>
  12. --FILE--
  13. <?php
  14. if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
  15. require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  16. $db = PDOTest::factory();
  17. switch ($db->getAttribute(PDO::ATTR_DRIVER_NAME)) {
  18. case 'dblib':
  19. // environment settings can influence how the table is created if specifics are missing
  20. // https://msdn.microsoft.com/en-us/library/ms174979.aspx#Nullability Rules Within a Table Definition
  21. $sql = 'create table test (id int, name varchar(10) null)';
  22. break;
  23. default:
  24. $sql = 'create table test (id int, name varchar(10))';
  25. break;
  26. }
  27. $db->exec($sql);
  28. $stmt = $db->prepare('insert into test (id, name) values(0, :name)');
  29. $name = NULL;
  30. $before_bind = $name;
  31. $stmt->bindParam(':name', $name, PDO::PARAM_NULL);
  32. if ($name !== $before_bind) {
  33. echo "bind: fail\n";
  34. } else {
  35. echo "bind: success\n";
  36. }
  37. var_dump($stmt->execute());
  38. var_dump($db->query('select name from test where id=0')->fetchColumn());
  39. ?>
  40. --EXPECT--
  41. bind: success
  42. bool(true)
  43. NULL