Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : PostgreSQL Functions : pg_lo_open

pg_lo_open

Open a large object (PHP 4 >= 4.2.0, PHP 5)
resource pg_lo_open ( resource connection, int oid, string mode )

pg_lo_open() opens a large object in the database and returns large object resource so that it can be manipulated.

Warning:

Do not close the database connection before closing the large object resource.

To use the large object interface, it is necessary to enclose it within a transaction block.

Note:

This function used to be called pg_loopen().

Parameters

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

oid

The OID of the large object in the database.

mode

Can be either "r" for read-only, "w" for write only or "rw" for read and write.

Return Values

A large object resource or FALSE on error.

Examples

Example 1947. pg_lo_open() example

<?php
  $database
= pg_connect("dbname=jacarta");
 
pg_query($database, "begin");
 
$oid = pg_lo_create($database);
  echo
"$oid\n";
 
$handle = pg_lo_open($database, $oid, "w");
  echo
"$handle\n";
 
pg_lo_write($handle, "large object data");
 
pg_lo_close($handle);
 
pg_query($database, "commit");
?>


Code Examples / Notes » pg_lo_open

metator

Just for the record, a user must be a superuser (database owner) in order to invoke pg_lo_open() (though pg_lo_create() may be invoked...). This opens a gigantic security hole in the db. If a user is not a superuser, db will raise an error with message "Can't create Large Object.".
Thus, imho, one should use pg_escape_bytea() instead.


riccardo_ridenti

//INSERT FILE INTO DB
$fp = fopen($filename,"r");
$buffer = fread($fp,filesize($filename));
fclose($fp);
   pg_query ($conn, "begin");
   $oid = pg_lo_create ($conn);
   //echo "$oid\n";
  $rs = pg_exec($conn,"insert into table(object) values($oid);");//object field type must be "oid"
   $handle = pg_lo_open ($conn, $oid, "w");
   //echo "$handle\n";
   pg_lo_write ($handle, $buffer);
   pg_lo_close ($handle);
   pg_query ($conn, "commit"); //OR END
pg_close();
//GET BUFFER(file) FROM DB
$rs = pg_exec($conn,"select object from objects where id = xxxxxx;");
$row = pg_fetch_row($rs,0);
pg_query ($conn, "begin");
$loid = pg_lo_open($conn,$row[0], "r");
pg_lo_read_all ($loid);
pg_lo_close ($loid);
pg_query ($conn, "commit"); //OR END
pg_close();


Change Language


Follow Navioo On Twitter
pg_affected_rows
pg_cancel_query
pg_client_encoding
pg_close
pg_connect
pg_connection_busy
pg_connection_reset
pg_connection_status
pg_convert
pg_copy_from
pg_copy_to
pg_dbname
pg_delete
pg_end_copy
pg_escape_bytea
pg_escape_string
pg_execute
pg_fetch_all_columns
pg_fetch_all
pg_fetch_array
pg_fetch_assoc
pg_fetch_object
pg_fetch_result
pg_fetch_row
pg_field_is_null
pg_field_name
pg_field_num
pg_field_prtlen
pg_field_size
pg_field_table
pg_field_type_oid
pg_field_type
pg_free_result
pg_get_notify
pg_get_pid
pg_get_result
pg_host
pg_insert
pg_last_error
pg_last_notice
pg_last_oid
pg_lo_close
pg_lo_create
pg_lo_export
pg_lo_import
pg_lo_open
pg_lo_read_all
pg_lo_read
pg_lo_seek
pg_lo_tell
pg_lo_unlink
pg_lo_write
pg_meta_data
pg_num_fields
pg_num_rows
pg_options
pg_parameter_status
pg_pconnect
pg_ping
pg_port
pg_prepare
pg_put_line
pg_query_params
pg_query
pg_result_error_field
pg_result_error
pg_result_seek
pg_result_status
pg_select
pg_send_execute
pg_send_prepare
pg_send_query_params
pg_send_query
pg_set_client_encoding
pg_set_error_verbosity
pg_trace
pg_transaction_status
pg_tty
pg_unescape_bytea
pg_untrace
pg_update
pg_version
eXTReMe Tracker