007.phpt 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. --TEST--
  2. InterBase: array handling
  3. --SKIPIF--
  4. <?php include("skipif.inc"); ?>
  5. --FILE--
  6. <?php /* $Id$ */
  7. require("interbase.inc");
  8. ibase_connect($test_base);
  9. ibase_query(
  10. "create table test7 (
  11. iter integer,
  12. v_multi integer[10,10,10],
  13. v_char char(100)[10],
  14. v_date timestamp[10],
  15. v_decimal decimal(18,3)[10],
  16. v_double double precision[10],
  17. v_float float[10],
  18. v_integer integer[10],
  19. v_numeric numeric(9,2)[10],
  20. v_smallint smallint[10],
  21. v_varchar varchar(1000)[10]
  22. )");
  23. ibase_commit();
  24. /* if timefmt not supported, hide error */
  25. ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
  26. echo "insert\n";
  27. for ($i = 1; $i <= 10; ++$i) {
  28. for ($j = 1; $j <= 10; ++$j) {
  29. for ($k = 1; $k <= 10; ++$k) {
  30. $v_multi[$i][$j][$k] = $i * $j * $k;
  31. }
  32. }
  33. }
  34. for($iter = 0; $iter < 3; $iter++) {
  35. /* prepare data */
  36. $v_char = array();
  37. $v_date = array();
  38. $v_decimal = array();
  39. $v_double = array();
  40. $v_float = array();
  41. $v_integer = array();
  42. $v_numeric = array();
  43. $v_smallint = array();
  44. $v_varchar = array();
  45. for ($i = 1; $i <= 10; ++$i) {
  46. $v_char[$i] = rand_str(100);
  47. $v_date[$i] = rand_datetime();
  48. $v_decimal[$i] = rand_number(18,3);
  49. $v_double[$i] = rand_number(20);
  50. $v_float[$i] = rand_number(7);
  51. $v_integer[$i] = rand_number(9,0);
  52. $v_numeric[$i] = rand_number(9,2);
  53. $v_smallint[$i] = rand_number(5) % 32767;
  54. $v_varchar[$i] = rand_str(1000);
  55. }
  56. ibase_query("insert into test7
  57. (iter,v_multi,v_char,v_date,v_decimal,v_double,v_float,
  58. v_integer,v_numeric,v_smallint,v_varchar)
  59. values (?,?,?,?,?,?,?,?,?,?,?)",
  60. $iter, $v_multi, $v_char, $v_date, $v_decimal, $v_double, $v_float,
  61. $v_integer, $v_numeric, $v_smallint, $v_varchar);
  62. $sel = ibase_query("select * from test7 where iter = $iter");
  63. $row = ibase_fetch_object($sel,IBASE_FETCH_ARRAYS);
  64. for ($i = 1; $i <= 10; ++$i) {
  65. if(strncmp($row->V_CHAR[$i],$v_char[$i],strlen($v_char[$i])) != 0) {
  66. echo " CHAR[$i] fail:\n";
  67. echo " in: ".$v_char[$i]."\n";
  68. echo " out: ".$row->V_CHAR[$i]."\n";
  69. }
  70. if($row->V_DATE[$i] != $v_date[$i]) {
  71. echo " DATE[$i] fail\n";
  72. echo " in: ".$v_date[$i]."\n";
  73. echo " out: ".$row->V_DATE[$i]."\n";
  74. }
  75. if($row->V_DECIMAL[$i] != $v_decimal[$i]) {
  76. echo " DECIMAL[$i] fail\n";
  77. echo " in: ".$v_decimal[$i]."\n";
  78. echo " out: ".$row->V_DECIMAL[$i]."\n";
  79. }
  80. if(abs($row->V_DOUBLE[$i] - $v_double[$i]) > abs($v_double[$i] / 1E15)) {
  81. echo " DOUBLE[$i] fail\n";
  82. echo " in: ".$v_double[$i]."\n";
  83. echo " out: ".$row->V_DOUBLE[$i]."\n";
  84. }
  85. if(abs($row->V_FLOAT[$i] - $v_float[$i]) > abs($v_float[$i] / 1E7)) {
  86. echo " FLOAT[$i] fail\n";
  87. echo " in: ".$v_float[$i]."\n";
  88. echo " out: ".$row->V_FLOAT[$i]."\n";
  89. }
  90. if($row->V_INTEGER[$i] != $v_integer[$i]) {
  91. echo " INTEGER[$i] fail\n";
  92. echo " in: ".$v_integer[$i]."\n";
  93. echo " out: ".$row->V_INTEGER[$i]."\n";
  94. }
  95. if ($row->V_NUMERIC[$i] != $v_numeric[$i]) {
  96. echo " NUMERIC[$i] fail\n";
  97. echo " in: ".$v_numeric[$i]."\n";
  98. echo " out: ".$row->V_NUMERIC[$i]."\n";
  99. }
  100. if ($row->V_SMALLINT[$i] != $v_smallint[$i]) {
  101. echo " SMALLINT[$i] fail\n";
  102. echo " in: ".$v_smallint[$i]."\n";
  103. echo " out: ".$row->V_SMALLINT[$i]."\n";
  104. }
  105. if ($row->V_VARCHAR[$i] != $v_varchar[$i]) {
  106. echo " VARCHAR[$i] fail:\n";
  107. echo " in: ".$v_varchar[$i]."\n";
  108. echo " out: ".$row->V_VARCHAR[$i]."\n";
  109. }
  110. }
  111. ibase_free_result($sel);
  112. }/* for($iter) */
  113. echo "select\n";
  114. $sel = ibase_query("SELECT v_multi[5,5,5],v_multi[10,10,10] FROM test7 WHERE iter = 0");
  115. print_r(ibase_fetch_row($sel));
  116. ibase_free_result($sel);
  117. for($iter = 1; $iter <= 3; $iter++) {
  118. if(!($sel = ibase_query(
  119. "select iter from test7 where v_char[$iter] LIKE ?", $v_char[$iter]."%")) ||
  120. !ibase_fetch_row($sel)) {
  121. echo "CHAR fail\n";
  122. }
  123. ibase_free_result($sel);
  124. if(!($sel = ibase_query(
  125. "select iter from test7 where v_date[$iter] = ?", $v_date[$iter])) ||
  126. !ibase_fetch_row($sel)) {
  127. echo "DATE fail\n";
  128. }
  129. ibase_free_result($sel);
  130. if(!($sel = ibase_query(
  131. "select iter from test7 where v_decimal[$iter] = ?", $v_decimal[$iter])) ||
  132. !ibase_fetch_row($sel)) {
  133. echo "DECIMAL fail\n";
  134. }
  135. ibase_free_result($sel);
  136. if(!($sel = ibase_query(
  137. "select iter from test7 where v_integer[$iter] = ?", $v_integer[$iter])) ||
  138. !ibase_fetch_row($sel)) {
  139. echo "INTEGER fail\n";
  140. }
  141. ibase_free_result($sel);
  142. if(!($sel = ibase_query(
  143. "select iter from test7 where v_numeric[$iter] = ?", $v_numeric[$iter])) ||
  144. !ibase_fetch_row($sel)) {
  145. echo "NUMERIC fail\n";
  146. }
  147. ibase_free_result($sel);
  148. if(!($sel = ibase_query(
  149. "select iter from test7 where v_smallint[$iter] = ?", $v_smallint[$iter])) ||
  150. !ibase_fetch_row($sel)) {
  151. echo "SMALLINT fail\n";
  152. }
  153. ibase_free_result($sel);
  154. }
  155. ibase_close();
  156. echo "end of test\n";
  157. ?>
  158. --EXPECT--
  159. insert
  160. select
  161. Array
  162. (
  163. [0] => 125
  164. [1] => 1000
  165. )
  166. end of test