2
InterBase: binding (may take a while)
4
<?php include("skipif.inc"); ?>
6
<?php /* $Id: 006.phpt,v 1.11 2004/05/30 16:20:25 abies Exp $ */
8
require("interbase.inc");
10
ibase_connect($test_base);
17
v_decimal decimal(12,3),
18
v_double double precision,
21
v_numeric numeric(4,2),
23
v_varchar varchar(10000)
26
"create procedure add1 (arg integer)
27
returns (result integer)
34
/* if timefmt not supported, hide error */
35
ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
39
for($iter = 0; $iter < 3; $iter++) {
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);
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);
59
$row = ibase_fetch_object($sel);
60
if(substr($row->V_CHAR,0,strlen($v_char)) != $v_char) {
62
echo " in: $v_char\n";
63
echo " out: $row->V_CHAR\n";
65
if($row->V_DATE != $v_date) {
67
echo " in: $v_date\n";
68
echo " out: $row->V_DATE\n";
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";
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";
80
if(abs($row->V_FLOAT - $v_float) > abs($v_float / 1E7)) {
82
echo " in: $v_float\n";
83
echo " out: $row->V_FLOAT\n";
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";
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";
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";
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";
105
ibase_free_result($sel);
109
for($iter = 0; $iter < 3; $iter++) {
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);
122
ibase_query("delete from test6");
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);
132
if(!($sel = ibase_query(
133
"select iter from test6 where v_char = ?", $v_char)) ||
134
!ibase_fetch_row($sel)) {
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)) {
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";
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";
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";
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";
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";
173
ibase_free_result($sel);
177
echo "prepare and exec insert\n";
180
ibase_query("delete from test6");
183
$query = ibase_prepare(
184
"insert into test6 (v_integer) values (?)");
186
for($i = 0; $i < 10; $i++) {
187
ibase_execute($query, $i);
192
ibase_free_query($query);
194
echo "prepare and exec select\n";
197
$query = ibase_prepare("select * from test6
198
where v_integer between ? and ?");
203
$res = ibase_execute($query, $low_border, $high_border);
204
out_result($res, "test6");
205
ibase_free_result($res);
209
$res = ibase_execute($query, $low_border, $high_border);
210
out_result($res, "test6");
211
ibase_free_result($res);
213
$res = ibase_execute($query, "5", 7.5);
214
out_result($res, "test6");
215
ibase_free_result($res);
217
ibase_free_query($query);
219
/* test execute procedure */
220
$query = ibase_prepare("execute procedure add1(?)");
222
for ($i = 0; $i < 10; $i++) {
223
$res[] = ibase_execute($query,$i);
225
ibase_free_query($query);
226
foreach ($res as $r) {
227
out_result($r, "proc add1");
228
ibase_free_result($r);
232
echo "end of test\n";
237
prepare and exec insert
250
prepare and exec select