Skip to Content.
Sympa Menu

freetds - [freetds] php + tds with sql server, retrieving images

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Martin Rode <martin.rode AT programmfabrik.de>
  • To: freetds AT lists.ibiblio.org
  • Subject: [freetds] php + tds with sql server, retrieving images
  • Date: Wed, 05 Apr 2006 17:00:25 +0200

hi everybody,

i have

* Debian Linux
* PHP 4.4.2-1+b1
* tdsodbc 0.63-2
* unixodbc 2.2.11-12

My problem is, that via ODBC i can write image binary to the database (using the 0x notation), but I can only retrieve 4096 bytes from that binary back. What am I doing wrong?

Thanks for your support!
Martin

PHP script comes here:
------------------------------------------------------------------------------------------

$dsn ="DRIVER={FreeTDS};SERVER=thepope;DATABASE=test";
$link2 = odbc_connect($dsn , 'sa', 'test' ) or die(odbc_errormsg() );

$datastring = file_get_contents("/home/martin/jpegs/goil.jpg");

odbc_autocommit($link2, true);

odbc_exec($link2, "IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'images') DROP TABLE [images];");


odbc_exec($link2, "
CREATE TABLE images (
name varchar(50),
data image
);");

$data = odbc_escape_string(file_get_contents("/home/martin/jpegs/goil.jpg"));

$sql = "insert into images (name, data) values ('img.jpg',$data);";
odbc_exec($link2,$sql);

// retrieving: this only gives me 4096 bytes
$result = odbc_exec($link2, "select data from images;");
header("Content-Type: image/jpg");
odbc_longreadlen($result, 8192);
$row = odbc_fetch_array($result);
echo $row['data'];


function odbc_escape_string($datastring) {
$data = unpack("H*hex", $datastring); return '0x'.substr($data[hex],0,strlen($data[hex])-1);
}
-----------------------------------------------------------------






Archive powered by MHonArc 2.6.24.

Top of Page