006.phpt 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. --TEST--
  2. InterBase: binding (may take a while)
  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 test6 (
  11. iter integer,
  12. v_char char(1000),
  13. v_date timestamp,
  14. v_decimal decimal(12,3),
  15. v_double double precision,
  16. v_float float,
  17. v_integer integer,
  18. v_numeric numeric(4,2),
  19. v_smallint smallint,
  20. v_varchar varchar(10000)
  21. )");
  22. ibase_query(
  23. "create procedure add1 (arg integer)
  24. returns (result integer)
  25. as
  26. begin
  27. result = arg +1;
  28. end");
  29. ibase_commit();
  30. /* if timefmt not supported, hide error */
  31. ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
  32. echo "insert\n";
  33. for($iter = 0; $iter < 3; $iter++) {
  34. /* prepare data */
  35. $v_char = rand_str(1000);
  36. $v_date = rand_datetime();
  37. $v_decimal = rand_number(12,3);
  38. $v_double = rand_number(20);
  39. $v_float = rand_number(7);
  40. $v_integer = rand_number(9,0);
  41. $v_numeric = rand_number(4,2);
  42. $v_smallint = rand_number(5) % 32767;
  43. $v_varchar = rand_str(10000);
  44. ibase_query("insert into test6
  45. (iter,v_char,v_date,v_decimal,v_double,v_float,
  46. v_integer,v_numeric,v_smallint,v_varchar)
  47. values (?,?,?,?,?,?,?,?,?,?)",
  48. $iter, $v_char, $v_date, $v_decimal, $v_double, $v_float,
  49. $v_integer, $v_numeric, $v_smallint, $v_varchar);
  50. $sel = ibase_query("select * from test6 where iter = ?", $iter);
  51. $row = ibase_fetch_object($sel);
  52. if(substr($row->V_CHAR,0,strlen($v_char)) != $v_char) {
  53. echo " CHAR fail:\n";
  54. echo " in: $v_char\n";
  55. echo " out: $row->V_CHAR\n";
  56. }
  57. if($row->V_DATE != $v_date) {
  58. echo " DATE fail\n";
  59. echo " in: $v_date\n";
  60. echo " out: $row->V_DATE\n";
  61. }
  62. if($row->V_DECIMAL != $v_decimal) {
  63. echo " DECIMAL fail\n";
  64. echo " in: $v_decimal\n";
  65. echo " out: $row->V_DECIMAL\n";
  66. }
  67. if(abs($row->V_DOUBLE - $v_double) > abs($v_double / 1E15)) {
  68. echo " DOUBLE fail\n";
  69. echo " in: $v_double\n";
  70. echo " out: $row->V_DOUBLE\n";
  71. }
  72. if(abs($row->V_FLOAT - $v_float) > abs($v_float / 1E7)) {
  73. echo " FLOAT fail\n";
  74. echo " in: $v_float\n";
  75. echo " out: $row->V_FLOAT\n";
  76. }
  77. if($row->V_INTEGER != $v_integer) {
  78. echo " INTEGER fail\n";
  79. echo " in: $v_integer\n";
  80. echo " out: $row->V_INTEGER\n";
  81. }
  82. if ($row->V_NUMERIC != $v_numeric) {
  83. echo " NUMERIC fail\n";
  84. echo " in: $v_numeric\n";
  85. echo " out: $row->V_NUMERIC\n";
  86. }
  87. if ($row->V_SMALLINT != $v_smallint) {
  88. echo " SMALLINT fail\n";
  89. echo " in: $v_smallint\n";
  90. echo " out: $row->V_SMALLINT\n";
  91. }
  92. if ($row->V_VARCHAR != $v_varchar) {
  93. echo " VARCHAR fail:\n";
  94. echo " in: $v_varchar\n";
  95. echo " out: $row->V_VARCHAR\n";
  96. }
  97. ibase_free_result($sel);
  98. }/* for($iter)*/
  99. echo "select\n";
  100. for($iter = 0; $iter < 3; $iter++) {
  101. /* prepare data */
  102. $v_char = rand_str(1000);
  103. $v_date = (int)rand_number(10,0,0);
  104. $v_decimal = rand_number(12,3);
  105. $v_double = rand_number(20);
  106. $v_float = rand_number(7);
  107. $v_integer = rand_number(9,0);
  108. $v_numeric = rand_number(4,2);
  109. $v_smallint = rand_number(5) % 32767;
  110. $v_varchar = rand_str(10000);
  111. /* clear table*/
  112. ibase_query("delete from test6");
  113. /* make one record */
  114. ibase_query("insert into test6
  115. (iter, v_char,v_date,v_decimal,
  116. v_integer,v_numeric,v_smallint,v_varchar)
  117. values (666, '$v_char',?,$v_decimal, $v_integer,
  118. $v_numeric, $v_smallint, '$v_varchar')",$v_date);
  119. /* test all types */
  120. if(!($sel = ibase_query(
  121. "select iter from test6 where v_char = ?", $v_char)) ||
  122. !ibase_fetch_row($sel)) {
  123. echo "CHAR fail\n";
  124. }
  125. ibase_free_result($sel);
  126. if(!($sel = ibase_query(
  127. "select iter from test6 where v_date = ?", $v_date)) ||
  128. !ibase_fetch_row($sel)) {
  129. echo "DATE fail\n";
  130. }
  131. ibase_free_result($sel);
  132. if(!($sel = ibase_query(
  133. "select iter from test6 where v_decimal = ?", $v_decimal)) ||
  134. !ibase_fetch_row($sel)) {
  135. echo "DECIMAL fail\n";
  136. }
  137. ibase_free_result($sel);
  138. if(!($sel = ibase_query(
  139. "select iter from test6 where v_integer = ?", $v_integer)) ||
  140. !ibase_fetch_row($sel)) {
  141. echo "INTEGER fail\n";
  142. }
  143. ibase_free_result($sel);
  144. if(!($sel = ibase_query(
  145. "select iter from test6 where v_numeric = ?", $v_numeric)) ||
  146. !ibase_fetch_row($sel)) {
  147. echo "NUMERIC fail\n";
  148. }
  149. ibase_free_result($sel);
  150. if(!($sel = ibase_query(
  151. "select iter from test6 where v_smallint = ?", $v_smallint)) ||
  152. !ibase_fetch_row($sel)) {
  153. echo "SMALLINT fail\n";
  154. }
  155. ibase_free_result($sel);
  156. if(!($sel = ibase_query(
  157. "select iter from test6 where v_varchar = ?", $v_varchar)) ||
  158. !ibase_fetch_row($sel)) {
  159. echo "VARCHAR fail\n";
  160. }
  161. ibase_free_result($sel);
  162. } /*for iter*/
  163. echo "prepare and exec insert\n";
  164. /* prepare table */
  165. ibase_query("delete from test6");
  166. /* prepare query */
  167. $query = ibase_prepare(
  168. "insert into test6 (v_integer) values (?)");
  169. for($i = 0; $i < 10; $i++) {
  170. ibase_execute($query, $i);
  171. }
  172. out_table("test6");
  173. ibase_free_query($query);
  174. echo "prepare and exec select\n";
  175. /* prepare query */
  176. $query = ibase_prepare("select * from test6
  177. where v_integer between ? and ?");
  178. $low_border = 2;
  179. $high_border = 6;
  180. $res = ibase_execute($query, $low_border, $high_border);
  181. out_result($res, "test6");
  182. ibase_free_result($res);
  183. $low_border = 0;
  184. $high_border = 4;
  185. $res = ibase_execute($query, $low_border, $high_border);
  186. out_result($res, "test6");
  187. ibase_free_result($res);
  188. $res = ibase_execute($query, "5", 7.499);
  189. out_result($res, "test6");
  190. ibase_free_result($res);
  191. ibase_free_query($query);
  192. /* test execute procedure */
  193. $query = ibase_prepare("execute procedure add1(?)");
  194. $res = array();
  195. for ($i = 0; $i < 10; $i++) {
  196. $res[] = ibase_execute($query,$i);
  197. }
  198. ibase_free_query($query);
  199. foreach ($res as $r) {
  200. out_result($r, "proc add1");
  201. ibase_free_result($r);
  202. }
  203. ibase_close();
  204. echo "end of test\n";
  205. ?>
  206. --EXPECT--
  207. insert
  208. select
  209. prepare and exec insert
  210. --- test6 ---
  211. 0
  212. 1
  213. 2
  214. 3
  215. 4
  216. 5
  217. 6
  218. 7
  219. 8
  220. 9
  221. ---
  222. prepare and exec select
  223. --- test6 ---
  224. 2
  225. 3
  226. 4
  227. 5
  228. 6
  229. ---
  230. --- test6 ---
  231. 0
  232. 1
  233. 2
  234. 3
  235. 4
  236. ---
  237. --- test6 ---
  238. 5
  239. 6
  240. 7
  241. ---
  242. --- proc add1 ---
  243. 1
  244. ---
  245. --- proc add1 ---
  246. 2
  247. ---
  248. --- proc add1 ---
  249. 3
  250. ---
  251. --- proc add1 ---
  252. 4
  253. ---
  254. --- proc add1 ---
  255. 5
  256. ---
  257. --- proc add1 ---
  258. 6
  259. ---
  260. --- proc add1 ---
  261. 7
  262. ---
  263. --- proc add1 ---
  264. 8
  265. ---
  266. --- proc add1 ---
  267. 9
  268. ---
  269. --- proc add1 ---
  270. 10
  271. ---
  272. end of test