Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: pg_escape_bytea - Manual
[go: Go Back, main page]

PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

pg_escape_string" width="11" height="7"/> <pg_end_copy
Last updated: Sun, 23 Sep 2007

view this page in

pg_escape_bytea

(PHP 4 >= 4.2.0, PHP 5)

pg_escape_bytea — bytea フィールドに挿入するために文字列をエスケープする

説明

string pg_escape_bytea ( [resource $connection, string $data] )

pg_escape_bytea() は、bytea 型のために文字列を エスケープし、エスケープした文字列を返します。

注意: bytea 型を SELECT した場合、PostgreSQL は '\' で 始まる 8 進数のバイト値(例: \032)を返します。これをユーザが手動で コンバートすることを期待されています。

この関数は PostgreSQL 7.2 以降のバージョンを必要とします。PostgreSQL 7.2.0 および 7.2.1 では、マルチバイトのサポートを有効にした場合は bytea の値をキャストする必要があります。例: INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 以降ではキャストする必要はありません。 クライアントとバックエンドの文字エンコーディングが一致しない場合は 例外で、この場合はマルチバイトストリームエラーが発生します。この エラーを避けるためには bytea 型へのキャストが必要になります。

パラメータ

connection

PostgreSQL データベース接続リソース。 connection が存在しない場合は、 デフォルトの接続を使用します。デフォルトの接続は、 pg_connect() あるいは pg_pconnect() で直近に作成されたものとなります。

data

bytea 型のカラムに挿入するテキストまたはバイナリデータを含む 文字列。

返り値

エスケープされたデータを文字列で返します。

変更履歴

バージョン説明
5.2.0connection が追加されました。

例 1900. pg_escape_bytea() の例

<?php
 
// データベースに接続する
 
$dbconn = pg_connect('dbname=foo');
 
 
// バイナリファイルを読み込む
 
$data = file_get_contents('image1.jpg');
 
 
// バイナリデータをエスケープする
 
$escaped = pg_escape_bytea($data);
 
 
// それをデータベースに挿入する
 
pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', '{$escaped}')");
?>

参考

pg_unescape_bytea()
pg_escape_string()



add a note add a note User Contributed Notes
pg_escape_bytea
Mocha
08-Aug-2003 09:20
to unescape_bytea use stripcslashes(). If you need to escape bytea and don't have pg_escape_bytea() function then use:

function escByteA($binData) {
  /**
   * \134 = 92 = backslash, \000 = 00 = NULL, \047 = 39 = Single Quote
   *
   * str_replace() replaces the searches array in order. Therefore, we must
   * process the 'backslash' character first. If we process it last, it'll
   * replace all the escaped backslashes from the other searches that came
   * before.
   */
  $search = array(chr(92), chr(0), chr(39));
  $replace = array('\\\134', '\\\000', '\\\047');
  $binData = str_replace($search, $replace, $binData);
  return $binData;
  //echo "<pre>$binData</pre>";
  //exit;
}
php at tobias dot olsson dot be
18-Aug-2002 01:56
if you need to change back bytea from the db to normal data, this will do that:

function pg_unescape_bytea($bytea) {
return eval("return \"".str_replace('$', '\\$', str_replace('"', '\\"', $bytea))."\";");
}

// use like this
$rs = pg_query($conn, "SELECT image from images LIMIT 1");
$image = pg_unescape_bytea(pg_fetch_result($rs, 0, 0));

/Tobias

pg_escape_string" width="11" height="7"/> <pg_end_copy
Last updated: Sun, 23 Sep 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites