bug_44173.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. PDO Common: Bug #44173 (PDO->query() parameter parsing/checking needs an update)
  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 getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  16. $db = PDOTest::factory();
  17. $db->exec("CREATE TABLE test (x int)");
  18. $db->exec("INSERT INTO test VALUES (1)");
  19. // Bug entry [2] -- 1 is PDO::FETCH_LAZY
  20. try {
  21. $stmt = $db->query("SELECT * FROM test", PDO::FETCH_LAZY, 0, []);
  22. var_dump($stmt);
  23. } catch (\TypeError $e) {
  24. echo $e->getMessage(), \PHP_EOL;
  25. }
  26. // Bug entry [3]
  27. try {
  28. $stmt = $db->query("SELECT * FROM test", 'abc');
  29. } catch (TypeError $e) {
  30. echo $e->getMessage(), "\n";
  31. }
  32. // Bug entry [4]
  33. try {
  34. $stmt = $db->query("SELECT * FROM test", PDO::FETCH_CLASS, 0, 0, 0);
  35. var_dump($stmt);
  36. } catch (\ArgumentCountError $e) {
  37. echo $e->getMessage(), \PHP_EOL;
  38. }
  39. // Bug entry [5]
  40. try {
  41. $stmt = $db->query("SELECT * FROM test", PDO::FETCH_INTO);
  42. var_dump($stmt);
  43. } catch (\ArgumentCountError $e) {
  44. echo $e->getMessage(), \PHP_EOL;
  45. }
  46. // Bug entry [6]
  47. try {
  48. $stmt = $db->query("SELECT * FROM test", PDO::FETCH_COLUMN);
  49. var_dump($stmt);
  50. } catch (\ArgumentCountError $e) {
  51. echo $e->getMessage(), \PHP_EOL;
  52. }
  53. // Bug entry [7]
  54. try {
  55. $stmt = $db->query("SELECT * FROM test", PDO::FETCH_CLASS);
  56. var_dump($stmt);
  57. } catch (\ArgumentCountError $e) {
  58. echo $e->getMessage(), \PHP_EOL;
  59. }
  60. ?>
  61. --EXPECT--
  62. PDO::query() expects exactly 2 arguments for the fetch mode provided, 4 given
  63. PDO::query(): Argument #2 ($fetchMode) must be of type ?int, string given
  64. PDO::query() expects at most 4 arguments for the fetch mode provided, 5 given
  65. PDO::query() expects exactly 3 arguments for the fetch mode provided, 2 given
  66. PDO::query() expects exactly 3 arguments for the fetch mode provided, 2 given
  67. PDO::query() expects at least 3 arguments for the fetch mode provided, 2 given