bug47803.phpt 3.3 KB

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