2017-08-09 18 views
0

XML文字列の代わりにHEX文字列を返すクエリがあります。 Firebird(2.5)フィールドはLONG​​として定義されています。ibase_query XML文字列の代わりにHEX文字列を返します

何が原因である可能性がありますか? GUI(例:FlySpeed)を使用して検索すると、完全なXML文字列が取得されます。 PHP 7ではHEX文字列を取得します。

ありがとうございます。

+2

Firebirdには「LONG」と呼ばれるタイプがありません。これは、自分が作成したドメインが「LONG」であることを意味します。関係するテーブルとドメインの実際のコードとDDLを表示する必要があります。 –

+0

私の悪い..フィールド型はXML_DATA_STRINGです...それは同様に自己作成ドメインのようですか? – pmoreira

+0

私たちの誰もこのドメインについて何も知らない。マークのコメントから: "あなたは、テーブルと関連するドメインの実際のコードとDDLを表示する必要があります。" –

答えて

0

function bl($field) { 
    $s = ""; 
    if ($field != null) { 
     $blob_data = ibase_blob_info($field); 
     $blob_hndl = ibase_blob_open($field); 
     $s = ibase_blob_get($blob_hndl, $blob_data[0]); 
     ibase_blob_close($blob_hndl); 
    } 
    return $s; 
} 
+0

これも試してみます...しかし、それは各サーバー(私は140+に接続する必要があります)の接続時間を増やすでしょうか?また、データを取得するのではなく、右? – pmoreira

+0

@pmoreiraのBLOBはテーブル外に格納されているため、露出しているかどうかにかかわらず常に余分な接続になります。他の唯一の方法は、blobフィールドをクエリのvarchar(nn)に変換することです。しかし、varcharフィールドは長さが制限されています。 –

0

この関数にあなたのBLOBフィールドを渡すには、テキスト文字列として、必要なすべてのフィールドを取得する方法を発見しました。

while ($row = ibase_fetch_assoc($sth,IBASE_TEXT)) { 
       $res[] = $row; 
      } 

ここで、データはテキスト文字列として取得されます。 実行時間は長くなりましたが。

関連する問題