bug47803.phpt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. --TEST--
  2. Bug #47803 Executing prepared statements is successful only for the first two statements
  3. --EXTENSIONS--
  4. odbc
  5. --SKIPIF--
  6. <?php include 'skipif.inc'; ?>
  7. --FILE--
  8. <?php
  9. include __DIR__ . "/config.inc";
  10. $create_table = "CREATE TABLE FOO(
  11. [PAR_ID] [int] NOT NULL,
  12. [PAR_INT] [int] NULL,
  13. [PAR_CHR] [varchar](500) NULL
  14. )";
  15. $inserts = "INSERT INTO FOO
  16. ([PAR_ID]
  17. ,[PAR_INT]
  18. ,[PAR_CHR])
  19. VALUES
  20. (1,14,''),
  21. (2,30,''),
  22. (3,7,''),
  23. (4,7,''),
  24. (5,0,''),
  25. (6,0,''),
  26. (7,20130901,''),
  27. (8,20140201,''),
  28. (9,20140201,''),
  29. (10,20140620,''),
  30. (11,221,'')";
  31. date_default_timezone_set('Europe/Warsaw');
  32. $link = odbc_connect($dsn, $user, $pass);
  33. odbc_exec($link, 'CREATE DATABASE odbcTEST');
  34. odbc_exec($link, $create_table);
  35. odbc_exec($link, $inserts);
  36. $upd_params = array(
  37. array('id'=>1, 'name'=>'test 1'),
  38. array('id'=>2, 'name'=>'test 2'),
  39. array('id'=>3, 'name'=>'test 3'),
  40. array('id'=>4, 'name'=>'test 4'),
  41. array('id'=>5, 'name'=>'test 5'),
  42. array('id'=>10, 'name'=>'test 10'),
  43. array('id'=>9, 'name'=>'test 9'),
  44. array('id'=>8, 'name'=>'test 8'),
  45. array('id'=>7, 'name'=>'test 7'),
  46. array('id'=>6, 'name'=>'test 6'),
  47. );
  48. $sql = "UPDATE FOO
  49. SET [PAR_CHR] = ?
  50. WHERE [PAR_ID] = ?";
  51. $result = odbc_prepare($link, $sql);
  52. if (!$result) {
  53. print ('[sql] prep: '.$sql);
  54. goto out;
  55. }
  56. foreach ($upd_params as &$k) {
  57. if(!odbc_execute($result, array($k['name'], $k['id']))) {
  58. print ('[sql] exec: '."array({$k['name']}, {$k['id']})");
  59. goto out;
  60. }
  61. }
  62. odbc_free_result($result);
  63. $sql = "SELECT * FROM FOO WHERE [PAR_ID] = ?";
  64. $result = odbc_prepare($link, $sql);
  65. if (!$result) {
  66. print ('[sql] prep: '.$sql);
  67. goto out;
  68. }
  69. foreach ($upd_params as $k) {
  70. if(!odbc_execute($result, array($k['id']))) {
  71. print ('[sql] exec: '."array({$k['id']})");
  72. goto out;
  73. }
  74. while (($r = odbc_fetch_array($result)) !== false) {
  75. var_dump($r);
  76. }
  77. }
  78. out:
  79. if ($result) odbc_free_result($result);
  80. odbc_close($link);
  81. ?>
  82. --EXPECT--
  83. array(3) {
  84. ["PAR_ID"]=>
  85. string(1) "1"
  86. ["PAR_INT"]=>
  87. string(2) "14"
  88. ["PAR_CHR"]=>
  89. string(6) "test 1"
  90. }
  91. array(3) {
  92. ["PAR_ID"]=>
  93. string(1) "2"
  94. ["PAR_INT"]=>
  95. string(2) "30"
  96. ["PAR_CHR"]=>
  97. string(6) "test 2"
  98. }
  99. array(3) {
  100. ["PAR_ID"]=>
  101. string(1) "3"
  102. ["PAR_INT"]=>
  103. string(1) "7"
  104. ["PAR_CHR"]=>
  105. string(6) "test 3"
  106. }
  107. array(3) {
  108. ["PAR_ID"]=>
  109. string(1) "4"
  110. ["PAR_INT"]=>
  111. string(1) "7"
  112. ["PAR_CHR"]=>
  113. string(6) "test 4"
  114. }
  115. array(3) {
  116. ["PAR_ID"]=>
  117. string(1) "5"
  118. ["PAR_INT"]=>
  119. string(1) "0"
  120. ["PAR_CHR"]=>
  121. string(6) "test 5"
  122. }
  123. array(3) {
  124. ["PAR_ID"]=>
  125. string(2) "10"
  126. ["PAR_INT"]=>
  127. string(8) "20140620"
  128. ["PAR_CHR"]=>
  129. string(7) "test 10"
  130. }
  131. array(3) {
  132. ["PAR_ID"]=>
  133. string(1) "9"
  134. ["PAR_INT"]=>
  135. string(8) "20140201"
  136. ["PAR_CHR"]=>
  137. string(6) "test 9"
  138. }
  139. array(3) {
  140. ["PAR_ID"]=>
  141. string(1) "8"
  142. ["PAR_INT"]=>
  143. string(8) "20140201"
  144. ["PAR_CHR"]=>
  145. string(6) "test 8"
  146. }
  147. array(3) {
  148. ["PAR_ID"]=>
  149. string(1) "7"
  150. ["PAR_INT"]=>
  151. string(8) "20130901"
  152. ["PAR_CHR"]=>
  153. string(6) "test 7"
  154. }
  155. array(3) {
  156. ["PAR_ID"]=>
  157. string(1) "7"
  158. ["PAR_INT"]=>
  159. string(8) "20130901"
  160. ["PAR_CHR"]=>
  161. string(6) "test 7"
  162. }
  163. --CLEAN--
  164. <?php
  165. include 'config.inc';
  166. $conn = odbc_connect($dsn, $user, $pass);
  167. odbc_exec($conn, 'DROP TABLE FOO');
  168. odbc_exec($conn, 'DROP DATABASE odbcTEST');
  169. odbc_close($conn);
  170. ?>