PDO_INFORMIX error

From: Date: Thu, 17 Nov 2011 21:59:17 +0000
Subject: PDO_INFORMIX error
Groups: php.pecl.dev 
Request: Send a blank email to pecl-dev+get-8879@lists.php.net to get a copy of this message
pdo_informix Team,   Receiving an error when attempting to insert a .gif file into a blob column.    It would seem the problem is related to the variable being bound in the   $stmt->bindParam(3, $fp_in, PDO::PARAM_LOB);   statement.  But, since I'm following convention and using   $file_in = "/tmp/testgraphic.gif"; $fp_in = fopen($file_in, 'rb');   I am quite unsure why I am receiving the error:   Array ( [0] => HY000 [1] => -461 [2] => [Informix][Informix ODBC Driver][Informix]File open error. (SQLPutData[-461] at /(path-to-source-code)/PDO_INFORMIX-1.2.6/informix_statement.c:812)) . I can insert the row if I pass NULL (see code and output below), but not if I pass the file descriptor (see code and output below).  I also receive the error is I pass in a string (see code below for commented out lines).  I can read and write the file successfully to the file system, so I know the file is accessable.  What kind of "file open" error am I getting here?   I have searched the net and can find no resolution.  I have looked at other posts on the PECL site and can not find this occuring to anyone else - and I don't like being special!  The full php code is below, as well as the output.  I sincerely hope you can help me to understand this!   Bryan ------------------------------------------------- ENVIRONMENT ------------------------------------------------ Solaris PHP 5.2.1 PDO_INFORMIX 1.2.6   ------------------------------------------------- PHP CODE ------------------------------------------------- <?php try    { printf("Attempting Connection!\n<br>"); $db = new PDO("informix:host=192.168.1.101; service=1526;database=testdb; server =landofoz; protocol=onsoctcp;EnableScrollableCursors=1;", "userid", "userpwd") ; printf("Connection Established!\n<br>"); $file_in = "/tmp/testgraphic.gif"; $file_out = "/tmp/testgraphic2.gif"; printf("Opening graphic files $file_in\n<br>"); $fp_in = fopen($file_in, 'rb'); $fp_out = fopen($file_out, 'wb'); $drop_stmt = "drop table testtbl"; $db->query($drop_stmt); $create_stmt = "create table testtbl ( item_nbr integer, item_desc char(20), ite m_img blob)"; $db->query($create_stmt); $ins_stmt = "insert into testtbl values (1, 'first' , NULL)"; $db->query($ins_stmt); $ins_stmt = "insert into testtbl values (2, 'second' , NULL)"; $db->query($ins_stmt); printf("Attempting prepare\n<br>"); $stmt = $db->prepare("insert into testtbl values (?, ?, ?)"); //$stmt = $db->prepare("insert into testtbl values (?, ?, NULL)"); $col_id = 125; $contenttype = "gifimage"; //$bytestream = "This is a test text."; printf("Attempting bind\n<br>"); $stmt->bindParam(1, $col_id, PDO::PARAM_INT); $stmt->bindParam(2, $contenttype, PDO::PARAM_STR); $stmt->bindParam(3, $fp_in, PDO::PARAM_LOB); //$stmt->bindParam(3 , $bytestream , PDO::PARAM_LOB , strlen($bytestream) ); printf("Attempting execute\n<br>"); $stmt->execute(); printf("Insert attempt complete\n<br>"); printf("Error information:\n<br>"); print_r($db->errorInfo()); printf("<br>Attempt to write file\n<br>"); $contents = fread($fp_in, filesize($file_in)); fwrite($fp_out, $contents); printf("<br>Closing files\n<br>"); fclose($fp_in); fclose($fp_out); printf("Attempting query\n<br>"); $stmt2 = $db->prepare("select * from testtbl"); printf("attempting fetch\n<br>"); $res = $stmt2->fetch( PDO::FETCH_BOTH ); $rows = $res[0]; printf("Table contents: $rows.\n<br>"); if ($stmt2->execute(array($_GET['name']))) {   while ($row = $stmt2->fetch()) {     print_r($row);     printf("\n<br>");   } } printf("Releasing database\n<br>"); $db = null;    } catch (PDOException $e)    {    print "Error!: " . $e->getMessage() . "<br/>";    die();    } ?> ------------------------------------- WEBPAGE OUTPUT _____________________ Attempting Connection! Connection Established! Opening graphic files /tmp/testgraphic.gif Attempting prepare Attempting bind Attempting execute Insert attempt complete Error information: Array ( [0] => HY000 [1] => -461 [2] => [Informix][Informix ODBC Driver][Informix]File open error. (SQLPutData[-461] at /path-to-compile-directory)/PDO_INFORMIX-1.2.6/informix_statement.c:812) ) Attempt to write file Closing files Attempting query attempting fetch Table contents: . Array ( [ITEM_NBR] => 1 [0] => 1 [ITEM_DESC] => first [1] => first [ITEM_IMG] => Resource id #5 [2] => Resource id #5 ) Array ( [ITEM_NBR] => 2 [0] => 2 [ITEM_DESC] => second [1] => second [ITEM_IMG] => Resource id #6 [2] => Resource id #6 ) Releasing database   Thanks, Bryan Bryan Osborne bryanosborne@yahoo.com

« previous php.pecl.dev (#8879) next »