bug_61207.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. --TEST--
  2. PDO MySQL Bug #61207 (PDO::nextRowset() after a multi-statement query doesn't always work)
  3. --SKIPIF--
  4. <?php
  5. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
  6. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  7. MySQLPDOTest::skip();
  8. ?>
  9. --FILE--
  10. <?php
  11. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  12. $db = MySQLPDOTest::factory();
  13. $db->query('DROP TABLE IF EXISTS test');
  14. $db->query('create table `test`( `id` int )');
  15. $handle1 = $db->prepare('insert into test(id) values(1);
  16. select * from test where id = ?;
  17. update test set id = 2 where id = ?;');
  18. $handle1->bindValue('1', '1');
  19. $handle1->bindValue('2', '1');
  20. $handle1->execute();
  21. $i = 1;
  22. print("Handle 1:\n");
  23. do {
  24. print('Rowset ' . $i++ . "\n");
  25. if ($handle1->columnCount() > 0)
  26. print("Results detected\n");
  27. } while($handle1->nextRowset());
  28. $handle2 = $db->prepare('select * from test where id = ?;
  29. update test set id = 1 where id = ?;');
  30. $handle2->bindValue('1', '2');
  31. $handle2->bindValue('2', '2');
  32. $handle2->execute();
  33. $i = 1;
  34. print("Handle 2:\n");
  35. do {
  36. print('Rowset ' . $i++ . "\n");
  37. if ($handle2->columnCount() > 0)
  38. print("Results detected\n");
  39. } while($handle2->nextRowset());
  40. $handle3 = $db->prepare('update test set id = 2 where id = ?;
  41. select * from test where id = ?;');
  42. $handle3->bindValue('1', '1');
  43. $handle3->bindValue('2', '2');
  44. $handle3->execute();
  45. $i = 1;
  46. print("Handle 3:\n");
  47. do {
  48. print('Rowset ' . $i++ . "\n");
  49. if ($handle3->columnCount() > 0)
  50. print("Results detected\n");
  51. } while($handle3->nextRowset());
  52. $handle4 = $db->prepare('insert into test(id) values(3);
  53. update test set id = 2 where id = ?;
  54. select * from test where id = ?;');
  55. $handle4->bindValue('1', '3');
  56. $handle4->bindValue('2', '2');
  57. $handle4->execute();
  58. $i = 1;
  59. print("Handle 4:\n");
  60. do {
  61. print('Rowset ' . $i++ . "\n");
  62. if ($handle1->columnCount() > 0)
  63. print("Results detected\n");
  64. } while($handle1->nextRowset());
  65. $db->query("DROP TABLE test");
  66. ?>
  67. --CLEAN--
  68. <?php
  69. require dirname(__FILE__) . '/mysql_pdo_test.inc';
  70. MySQLPDOTest::dropTestTable();
  71. ?>
  72. --EXPECT--
  73. Handle 1:
  74. Rowset 1
  75. Rowset 2
  76. Results detected
  77. Rowset 3
  78. Handle 2:
  79. Rowset 1
  80. Results detected
  81. Rowset 2
  82. Handle 3:
  83. Rowset 1
  84. Rowset 2
  85. Results detected
  86. Handle 4:
  87. Rowset 1
  88. Rowset 2
  89. Rowset 3
  90. Results detected