ID: 35338 User updated by: f dot engelhardt at 21torr dot com Reported By: f dot engelhardt at 21torr dot com Status: Open Bug Type: PDO related Operating System: Linux PHP Version: 5CVS-2005-11-22 (CVS) Assigned To: wez New Comment:
It works, if i specify PDO::PARAM_LOB with the bindParam() call in the insert script: $stmt->bindParam(':data',$sData,PDO::PARAM_LOB); I am not sure, if it should work without this, but it is working on postgresql if i do it like this. It also works with mysql, but that was working also without the PDO::PARAM_LOB parameter. So my question is: Is it desired that binary data can be inserted into a table without PDO::PARAM_LOB or not? Previous Comments: ------------------------------------------------------------------------ [2005-11-25 11:05:56] f dot engelhardt at 21torr dot com I am sorry, but i have to tell you, that nothing changed. After executing the insert script, there was only the following in the database: id data 4 \377\330\377\340 There has to more data. I know, that when using the pg_ functions i have to pg_escape_bytea() function on the binary data, and when i read it, i have to use the pg_unescape_bytea() function. Maybe this isn“t done. ------------------------------------------------------------------------ [2005-11-25 04:38:16] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip I've made some adjustments in CVS; please try the next PHP 5.1 snapshot and let me know how it goes. ------------------------------------------------------------------------ [2005-11-23 13:53:52] [EMAIL PROTECTED] Assigned to the maintainer. ------------------------------------------------------------------------ [2005-11-23 12:28:51] f dot engelhardt at 21torr dot com Sorry, i forgot to give you another hint: The data in the postgresql database in the first script was added with the pg_-functions into a bytea field. As explained some minutes ago, inserting binary data into a bytea field in postgres via pdo failes with no error output. Maybe i am using the wrong datatype for binary data in postgres, but i only found bytea for binary puroses. ------------------------------------------------------------------------ [2005-11-23 12:25:07] f dot engelhardt at 21torr dot com Exact the same script (replacing pgsql by mysql in the new PDO line) it works with mysql. I also tried it with CLI, the same error. And i found out another bug. I tried to insert data into the table with pdo into a postgresql database, but there are only some bytes inserted, not all. Script: <?php $dbh = new PDO('pgsql:host=localhost;dbname=test','root','fo0224'); $sData = file_get_contents('/home/bowman/.fluxbox/backgrounds/NVA-91.jpg'); $q = 'INSERT INTO foobar (data) VALUES (:data)'; $stmt = $dbh->prepare($q); if ($stmt) { $stmt->bindParam(':data',$sData); if (!$stmt->execute()) { print_r($stmt->errorInfo()); die('DAMN'); } //header('Content-Type: image/jpeg'); echo $sData; flush(); exit; } else { print_r($dbh->errorInfo()); } ?> This script is working with MySQL, but not with Postgresql ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/35338 -- Edit this bug report at http://bugs.php.net/?id=35338&edit=1