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