bug71885_2.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. Request #71855 (PDO placeholder escaping, part 2)
  3. --EXTENSIONS--
  4. pdo
  5. pdo_pgsql
  6. --SKIPIF--
  7. <?php
  8. require_once dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
  9. require_once dirname(__FILE__) . '/config.inc';
  10. PDOTest::skip();
  11. $db = PDOTest::factory();
  12. if (version_compare($db->getAttribute(PDO::ATTR_SERVER_VERSION), '9.4.0') < 0) {
  13. die("skip Requires 9.4+");
  14. }
  15. ?>
  16. --FILE--
  17. <?php
  18. require_once dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
  19. require_once dirname(__FILE__) . '/config.inc';
  20. $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
  21. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  22. $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM);
  23. $jsonb = $db->quote(json_encode(['a' => 1]));
  24. foreach ([false, true] as $emulate) {
  25. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, $emulate);
  26. $stmt = $db->prepare("SELECT {$jsonb}::jsonb ?? ?");
  27. $stmt->execute(['b']);
  28. var_dump($stmt->fetch());
  29. $stmt = $db->prepare("SELECT {$jsonb}::jsonb ???");
  30. $stmt->execute(['a']);
  31. var_dump($stmt->fetch());
  32. }
  33. ?>
  34. ==OK==
  35. --EXPECT--
  36. array(1) {
  37. [0]=>
  38. string(1) "0"
  39. }
  40. array(1) {
  41. [0]=>
  42. string(1) "1"
  43. }
  44. array(1) {
  45. [0]=>
  46. string(1) "0"
  47. }
  48. array(1) {
  49. [0]=>
  50. string(1) "1"
  51. }
  52. ==OK==