bug46292.phpt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. --TEST--
  2. Bug #46292 (PDO::setFetchMode() shouldn't requires the 2nd arg when using FETCH_CLASSTYPE)
  3. --EXTENSIONS--
  4. pdo_mysql
  5. --SKIPIF--
  6. <?php
  7. require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  8. MySQLPDOTest::skip();
  9. ?>
  10. --FILE--
  11. <?php
  12. require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  13. $pdoDb = MySQLPDOTest::factory();
  14. class myclass {
  15. public function __construct() {
  16. printf("%s()\n", __METHOD__);
  17. }
  18. }
  19. class myclass2 extends myclass { }
  20. $pdoDb->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  21. $pdoDb->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
  22. $pdoDb->query('DROP TABLE IF EXISTS testz');
  23. $pdoDb->query('CREATE TABLE testz (name VARCHAR(20) NOT NULL, value INT)');
  24. $pdoDb->query("INSERT INTO testz VALUES ('myclass', 1), ('myclass2', 2), ('myclass', NULL), ('myclass3', NULL)");
  25. $stmt = $pdoDb->prepare("SELECT * FROM testz");
  26. var_dump($stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE | PDO::FETCH_GROUP));
  27. $stmt->execute();
  28. var_dump($stmt->fetch());
  29. var_dump($stmt->fetch());
  30. var_dump($stmt->fetchAll());
  31. ?>
  32. --CLEAN--
  33. <?php
  34. require __DIR__ . '/mysql_pdo_test.inc';
  35. $db = MySQLPDOTest::factory();
  36. $db->exec('DROP TABLE IF EXISTS testz');
  37. ?>
  38. --EXPECTF--
  39. bool(true)
  40. myclass::__construct()
  41. object(myclass)#%d (1) {
  42. ["value"]=>
  43. string(1) "1"
  44. }
  45. myclass::__construct()
  46. object(myclass2)#%d (1) {
  47. ["value"]=>
  48. string(1) "2"
  49. }
  50. myclass::__construct()
  51. array(2) {
  52. [0]=>
  53. object(myclass)#%d (1) {
  54. ["value"]=>
  55. NULL
  56. }
  57. [1]=>
  58. object(stdClass)#%d (1) {
  59. ["value"]=>
  60. NULL
  61. }
  62. }