XML文字列の代わりにHEX文字列を返すクエリがあります。 Firebird(2.5)フィールドはLONGとして定義されています。ibase_query XML文字列の代わりにHEX文字列を返します
何が原因である可能性がありますか? GUI(例:FlySpeed)を使用して検索すると、完全なXML文字列が取得されます。 PHP 7ではHEX文字列を取得します。
ありがとうございます。
XML文字列の代わりにHEX文字列を返すクエリがあります。 Firebird(2.5)フィールドはLONGとして定義されています。ibase_query XML文字列の代わりにHEX文字列を返します
何が原因である可能性がありますか? GUI(例:FlySpeed)を使用して検索すると、完全なXML文字列が取得されます。 PHP 7ではHEX文字列を取得します。
ありがとうございます。
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;
}
これも試してみます...しかし、それは各サーバー(私は140+に接続する必要があります)の接続時間を増やすでしょうか?また、データを取得するのではなく、右? – pmoreira
@pmoreiraのBLOBはテーブル外に格納されているため、露出しているかどうかにかかわらず常に余分な接続になります。他の唯一の方法は、blobフィールドをクエリのvarchar(nn)に変換することです。しかし、varcharフィールドは長さが制限されています。 –
この関数にあなたのBLOBフィールドを渡すには、テキスト文字列として、必要なすべてのフィールドを取得する方法を発見しました。
while ($row = ibase_fetch_assoc($sth,IBASE_TEXT)) {
$res[] = $row;
}
ここで、データはテキスト文字列として取得されます。 実行時間は長くなりましたが。
Firebirdには「LONG」と呼ばれるタイプがありません。これは、自分が作成したドメインが「LONG」であることを意味します。関係するテーブルとドメインの実際のコードとDDLを表示する必要があります。 –
私の悪い..フィールド型はXML_DATA_STRINGです...それは同様に自己作成ドメインのようですか? – pmoreira
私たちの誰もこのドメインについて何も知らない。マークのコメントから: "あなたは、テーブルと関連するドメインの実際のコードとDDLを表示する必要があります。" –