2000-08-27 19:46:06 +00:00
|
|
|
--TEST--
|
|
|
|
InterBase: binding (may take a while)
|
|
|
|
--SKIPIF--
|
2003-04-25 15:43:28 +00:00
|
|
|
<?php include("skipif.inc"); ?>
|
2000-08-27 19:46:06 +00:00
|
|
|
--FILE--
|
2003-09-05 17:02:02 +00:00
|
|
|
<?php /* $Id$ */
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
require("interbase.inc");
|
|
|
|
|
|
|
|
ibase_connect($test_base);
|
|
|
|
|
|
|
|
ibase_query(
|
|
|
|
"create table test6 (
|
|
|
|
iter integer,
|
|
|
|
v_char char(1000),
|
|
|
|
v_date timestamp,
|
|
|
|
v_decimal decimal(12,3),
|
|
|
|
v_double double precision,
|
|
|
|
v_float float,
|
|
|
|
v_integer integer,
|
|
|
|
v_numeric numeric(4,2),
|
|
|
|
v_smallint smallint,
|
|
|
|
v_varchar varchar(10000)
|
|
|
|
)");
|
|
|
|
ibase_query(
|
|
|
|
"create procedure add1 (arg integer)
|
|
|
|
returns (result integer)
|
|
|
|
as
|
|
|
|
begin
|
|
|
|
result = arg +1;
|
|
|
|
end");
|
|
|
|
ibase_commit();
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
/* if timefmt not supported, hide error */
|
2004-05-30 16:20:25 +00:00
|
|
|
ini_set('ibase.timestampformat',"%m/%d/%Y %H:%M:%S");
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "insert\n";
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-05 12:18:03 +00:00
|
|
|
for($iter = 0; $iter < 3; $iter++) {
|
2003-09-03 17:15:40 +00:00
|
|
|
/* prepare data */
|
|
|
|
$v_char = rand_str(1000);
|
|
|
|
$v_date = rand_datetime();
|
|
|
|
$v_decimal = rand_number(12,3);
|
|
|
|
$v_double = rand_number(20);
|
|
|
|
$v_float = rand_number(7);
|
|
|
|
$v_integer = rand_number(9,0);
|
|
|
|
$v_numeric = rand_number(4,2);
|
|
|
|
$v_smallint = rand_number(5) % 32767;
|
|
|
|
$v_varchar = rand_str(10000);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_query("insert into test6
|
|
|
|
(iter,v_char,v_date,v_decimal,v_double,v_float,
|
|
|
|
v_integer,v_numeric,v_smallint,v_varchar)
|
|
|
|
values (?,?,?,?,?,?,?,?,?,?)",
|
|
|
|
$iter, $v_char, $v_date, $v_decimal, $v_double, $v_float,
|
|
|
|
$v_integer, $v_numeric, $v_smallint, $v_varchar);
|
2004-05-30 16:20:25 +00:00
|
|
|
$sel = ibase_query("select * from test6 where iter = ?", $iter);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
$row = ibase_fetch_object($sel);
|
2003-09-05 12:18:03 +00:00
|
|
|
if(substr($row->V_CHAR,0,strlen($v_char)) != $v_char) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " CHAR fail:\n";
|
|
|
|
echo " in: $v_char\n";
|
|
|
|
echo " out: $row->V_CHAR\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if($row->V_DATE != $v_date) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " DATE fail\n";
|
|
|
|
echo " in: $v_date\n";
|
|
|
|
echo " out: $row->V_DATE\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if($row->V_DECIMAL != $v_decimal) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " DECIMAL fail\n";
|
|
|
|
echo " in: $v_decimal\n";
|
|
|
|
echo " out: $row->V_DECIMAL\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if(abs($row->V_DOUBLE - $v_double) > abs($v_double / 1E15)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " DOUBLE fail\n";
|
|
|
|
echo " in: $v_double\n";
|
|
|
|
echo " out: $row->V_DOUBLE\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if(abs($row->V_FLOAT - $v_float) > abs($v_float / 1E7)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " FLOAT fail\n";
|
|
|
|
echo " in: $v_float\n";
|
|
|
|
echo " out: $row->V_FLOAT\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if($row->V_INTEGER != $v_integer) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " INTEGER fail\n";
|
|
|
|
echo " in: $v_integer\n";
|
|
|
|
echo " out: $row->V_INTEGER\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if ($row->V_NUMERIC != $v_numeric) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " NUMERIC fail\n";
|
|
|
|
echo " in: $v_numeric\n";
|
|
|
|
echo " out: $row->V_NUMERIC\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if ($row->V_SMALLINT != $v_smallint) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " SMALLINT fail\n";
|
|
|
|
echo " in: $v_smallint\n";
|
|
|
|
echo " out: $row->V_SMALLINT\n";
|
|
|
|
}
|
2003-09-05 12:18:03 +00:00
|
|
|
if ($row->V_VARCHAR != $v_varchar) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo " VARCHAR fail:\n";
|
|
|
|
echo " in: $v_varchar\n";
|
|
|
|
echo " out: $row->V_VARCHAR\n";
|
|
|
|
}
|
|
|
|
ibase_free_result($sel);
|
|
|
|
}/* for($iter)*/
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "select\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
for($iter = 0; $iter < 3; $iter++) {
|
2003-09-03 17:15:40 +00:00
|
|
|
/* prepare data */
|
|
|
|
$v_char = rand_str(1000);
|
2004-04-01 16:42:25 +00:00
|
|
|
$v_date = (int)rand_number(10,0,0);
|
2003-09-03 17:15:40 +00:00
|
|
|
$v_decimal = rand_number(12,3);
|
|
|
|
$v_double = rand_number(20);
|
|
|
|
$v_float = rand_number(7);
|
|
|
|
$v_integer = rand_number(9,0);
|
|
|
|
$v_numeric = rand_number(4,2);
|
|
|
|
$v_smallint = rand_number(5) % 32767;
|
|
|
|
$v_varchar = rand_str(10000);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
/* clear table*/
|
|
|
|
ibase_query("delete from test6");
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
/* make one record */
|
2000-08-27 19:46:06 +00:00
|
|
|
ibase_query("insert into test6
|
2003-09-03 17:15:40 +00:00
|
|
|
(iter, v_char,v_date,v_decimal,
|
|
|
|
v_integer,v_numeric,v_smallint,v_varchar)
|
2004-04-01 16:42:25 +00:00
|
|
|
values (666, '$v_char',?,$v_decimal, $v_integer,
|
|
|
|
$v_numeric, $v_smallint, '$v_varchar')",$v_date);
|
2003-09-03 17:15:40 +00:00
|
|
|
|
|
|
|
/* test all types */
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_char = ?", $v_char)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "CHAR fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_date = ?", $v_date)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "DATE fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_decimal = ?", $v_decimal)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "DECIMAL fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_integer = ?", $v_integer)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "INTEGER fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_numeric = ?", $v_numeric)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "NUMERIC fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_smallint = ?", $v_smallint)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "SMALLINT fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
|
|
|
if(!($sel = ibase_query(
|
2003-09-05 12:18:03 +00:00
|
|
|
"select iter from test6 where v_varchar = ?", $v_varchar)) ||
|
|
|
|
!ibase_fetch_row($sel)) {
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "VARCHAR fail\n";
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_result($sel);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-05 12:18:03 +00:00
|
|
|
} /*for iter*/
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
echo "prepare and exec insert\n";
|
2000-08-27 19:46:06 +00:00
|
|
|
|
|
|
|
/* prepare table */
|
|
|
|
ibase_query("delete from test6");
|
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
/* prepare query */
|
|
|
|
$query = ibase_prepare(
|
|
|
|
"insert into test6 (v_integer) values (?)");
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-05 12:18:03 +00:00
|
|
|
for($i = 0; $i < 10; $i++) {
|
2000-08-27 19:46:06 +00:00
|
|
|
ibase_execute($query, $i);
|
2003-09-05 12:18:03 +00:00
|
|
|
}
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
out_table("test6");
|
|
|
|
|
|
|
|
ibase_free_query($query);
|
|
|
|
|
|
|
|
echo "prepare and exec select\n";
|
|
|
|
|
|
|
|
/* prepare query */
|
|
|
|
$query = ibase_prepare("select * from test6
|
|
|
|
where v_integer between ? and ?");
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
$low_border = 2;
|
|
|
|
$high_border = 6;
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
$res = ibase_execute($query, $low_border, $high_border);
|
|
|
|
out_result($res, "test6");
|
|
|
|
ibase_free_result($res);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
$low_border = 0;
|
|
|
|
$high_border = 4;
|
|
|
|
$res = ibase_execute($query, $low_border, $high_border);
|
|
|
|
out_result($res, "test6");
|
|
|
|
ibase_free_result($res);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
$res = ibase_execute($query, "5", 7.5);
|
|
|
|
out_result($res, "test6");
|
|
|
|
ibase_free_result($res);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_free_query($query);
|
2000-08-27 19:46:06 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
/* test execute procedure */
|
|
|
|
$query = ibase_prepare("execute procedure add1(?)");
|
|
|
|
$res = array();
|
|
|
|
for ($i = 0; $i < 10; $i++) {
|
|
|
|
$res[] = ibase_execute($query,$i);
|
|
|
|
}
|
|
|
|
ibase_free_query($query);
|
2003-08-28 00:18:27 +00:00
|
|
|
foreach ($res as $r) {
|
2003-09-03 17:15:40 +00:00
|
|
|
out_result($r, "proc add1");
|
|
|
|
ibase_free_result($r);
|
|
|
|
}
|
2003-08-28 00:18:27 +00:00
|
|
|
|
2003-09-03 17:15:40 +00:00
|
|
|
ibase_close();
|
|
|
|
echo "end of test\n";
|
2000-08-27 19:46:06 +00:00
|
|
|
?>
|
|
|
|
--EXPECT--
|
|
|
|
insert
|
|
|
|
select
|
|
|
|
prepare and exec insert
|
|
|
|
--- test6 ---
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
8
|
|
|
|
9
|
|
|
|
---
|
|
|
|
prepare and exec select
|
|
|
|
--- test6 ---
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
5
|
|
|
|
6
|
|
|
|
---
|
|
|
|
--- test6 ---
|
|
|
|
0
|
|
|
|
1
|
|
|
|
2
|
|
|
|
3
|
|
|
|
4
|
|
|
|
---
|
|
|
|
--- test6 ---
|
|
|
|
5
|
|
|
|
6
|
|
|
|
7
|
|
|
|
---
|
2003-08-28 00:18:27 +00:00
|
|
|
--- proc add1 ---
|
|
|
|
1
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
2
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
3
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
4
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
5
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
6
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
7
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
8
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
9
|
|
|
|
---
|
|
|
|
--- proc add1 ---
|
|
|
|
10
|
|
|
|
---
|
2000-08-27 19:46:06 +00:00
|
|
|
end of test
|
|
|
|
|