1--TEST-- 2InterBase: BLOB test 3--SKIPIF-- 4<?php include("skipif.inc"); ?> 5--FILE-- 6<?php /* $Id$ */ 7 8 require("interbase.inc"); 9 10 $link = ibase_connect($test_base); 11 12 ibase_query( 13 "CREATE TABLE test4 ( 14 v_integer integer, 15 v_blob blob)"); 16 ibase_commit(); 17 18 /* create 100k blob file */ 19 $blob_str = rand_binstr(100*1024); 20 21 $name = tempnam(dirname(__FILE__),"blob.tmp"); 22 $ftmp = fopen($name,"w"); 23 fwrite($ftmp,$blob_str); 24 fclose($ftmp); 25 26 echo "import blob 1\n"; 27 $ftmp = fopen($name,"r"); 28 $bl_s = ibase_blob_import($ftmp); 29 ibase_query("INSERT INTO test4 (v_integer, v_blob) VALUES (1, ?)", $bl_s); 30 31 $bl_s = ibase_blob_import($link,$ftmp); 32 ibase_query($link, "INSERT INTO test4 (v_integer, v_blob) VALUES (1, ?)", $bl_s); 33 fclose($ftmp); 34 35 echo "test blob 1\n"; 36 $q = ibase_query("SELECT v_blob FROM test4 WHERE v_integer = 1"); 37 38 $row = ibase_fetch_object($q); 39 $bl_h = ibase_blob_open($row->V_BLOB); 40 41 $blob = ''; 42 while($piece = ibase_blob_get($bl_h, 1 + rand() % 1024)) 43 $blob .= $piece; 44 if($blob != $blob_str) 45 echo " BLOB 1 fail (1)\n"; 46 ibase_blob_close($bl_h); 47 48 $bl_h = ibase_blob_open($link,$row->V_BLOB); 49 50 $blob = ''; 51 while($piece = ibase_blob_get($bl_h, 100 * 1024)) 52 $blob .= $piece; 53 if($blob != $blob_str) 54 echo " BLOB 1 fail (2)\n"; 55 ibase_blob_close($bl_h); 56 ibase_free_result($q); 57 unset($blob); 58 59 echo "create blob 2\n"; 60 61 ibase_query("INSERT INTO test4 (v_integer, v_blob) VALUES (2, ?)", $blob_str); 62 63 echo "test blob 2\n"; 64 65 $q = ibase_query("SELECT v_blob FROM test4 WHERE v_integer = 2"); 66 $row = ibase_fetch_object($q,IBASE_TEXT); 67 68 if($row->V_BLOB != $blob_str) 69 echo " BLOB 2 fail\n"; 70 ibase_free_result($q); 71 unset($blob); 72 73 74 echo "create blob 3\n"; 75 76 $bl_h = ibase_blob_create($link); 77 78 ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n"); 79 ibase_blob_add($bl_h, "| PHP HTML Embedded Scripting Language Version 3.0 |\n"); 80 ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n"); 81 ibase_blob_add($bl_h, "| Copyright (c) 1997-2000 PHP Development Team (See Credits file) |\n"); 82 ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n"); 83 ibase_blob_add($bl_h, "| This program is free software; you can redistribute it and/or modify |\n"); 84 ibase_blob_add($bl_h, "| it under the terms of one of the following licenses: |\n"); 85 ibase_blob_add($bl_h, "| |\n"); 86 ibase_blob_add($bl_h, "| A) the GNU General Public License as published by the Free Software |\n"); 87 ibase_blob_add($bl_h, "| Foundation; either version 2 of the License, or (at your option) |\n"); 88 ibase_blob_add($bl_h, "| any later version. |\n"); 89 ibase_blob_add($bl_h, "| |\n"); 90 ibase_blob_add($bl_h, "| B) the PHP License as published by the PHP Development Team and |\n"); 91 ibase_blob_add($bl_h, "| included in the distribution in the file: LICENSE |\n"); 92 ibase_blob_add($bl_h, "| |\n"); 93 ibase_blob_add($bl_h, "| This program is distributed in the hope that it will be useful, |\n"); 94 ibase_blob_add($bl_h, "| but WITHOUT ANY WARRANTY; without even the implied warranty of |\n"); 95 ibase_blob_add($bl_h, "| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |\n"); 96 ibase_blob_add($bl_h, "| GNU General Public License for more details. |\n"); 97 ibase_blob_add($bl_h, "| |\n"); 98 ibase_blob_add($bl_h, "| You should have received a copy of both licenses referred to here. |\n"); 99 ibase_blob_add($bl_h, "| If you did not, or have any questions about PHP licensing, please |\n"); 100 ibase_blob_add($bl_h, "| contact core@php.net. |\n"); 101 ibase_blob_add($bl_h, "+----------------------------------------------------------------------+\n"); 102 $bl_s = ibase_blob_close($bl_h); 103 ibase_query("INSERT INTO test4 (v_integer, v_blob) VALUES (3, ?)", $bl_s); 104 ibase_commit(); 105 echo "echo blob 3\n"; 106 107 $q = ibase_query("SELECT v_blob FROM test4 WHERE v_integer = 3"); 108 $row = ibase_fetch_object($q); 109 ibase_commit(); 110 ibase_close(); 111 112 ibase_connect($test_base); 113 ibase_blob_echo($link, $row->V_BLOB); 114 ibase_free_result($q); 115 116 echo "fetch blob 3\n"; 117 $q = ibase_query("SELECT v_blob FROM test4 WHERE v_integer = 3"); 118 $row = ibase_fetch_object($q,IBASE_TEXT); 119 echo $row->V_BLOB; 120 ibase_free_result($q); 121 122 ibase_close(); 123 unlink($name); 124 echo "end of test\n"; 125?> 126--EXPECT-- 127import blob 1 128test blob 1 129create blob 2 130test blob 2 131create blob 3 132echo blob 3 133+----------------------------------------------------------------------+ 134| PHP HTML Embedded Scripting Language Version 3.0 | 135+----------------------------------------------------------------------+ 136| Copyright (c) 1997-2000 PHP Development Team (See Credits file) | 137+----------------------------------------------------------------------+ 138| This program is free software; you can redistribute it and/or modify | 139| it under the terms of one of the following licenses: | 140| | 141| A) the GNU General Public License as published by the Free Software | 142| Foundation; either version 2 of the License, or (at your option) | 143| any later version. | 144| | 145| B) the PHP License as published by the PHP Development Team and | 146| included in the distribution in the file: LICENSE | 147| | 148| This program is distributed in the hope that it will be useful, | 149| but WITHOUT ANY WARRANTY; without even the implied warranty of | 150| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 151| GNU General Public License for more details. | 152| | 153| You should have received a copy of both licenses referred to here. | 154| If you did not, or have any questions about PHP licensing, please | 155| contact core@php.net. | 156+----------------------------------------------------------------------+ 157fetch blob 3 158+----------------------------------------------------------------------+ 159| PHP HTML Embedded Scripting Language Version 3.0 | 160+----------------------------------------------------------------------+ 161| Copyright (c) 1997-2000 PHP Development Team (See Credits file) | 162+----------------------------------------------------------------------+ 163| This program is free software; you can redistribute it and/or modify | 164| it under the terms of one of the following licenses: | 165| | 166| A) the GNU General Public License as published by the Free Software | 167| Foundation; either version 2 of the License, or (at your option) | 168| any later version. | 169| | 170| B) the PHP License as published by the PHP Development Team and | 171| included in the distribution in the file: LICENSE | 172| | 173| This program is distributed in the hope that it will be useful, | 174| but WITHOUT ANY WARRANTY; without even the implied warranty of | 175| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 176| GNU General Public License for more details. | 177| | 178| You should have received a copy of both licenses referred to here. | 179| If you did not, or have any questions about PHP licensing, please | 180| contact core@php.net. | 181+----------------------------------------------------------------------+ 182end of test 183