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