2017-08-09 76 views
0

我有一個查詢返回一個十六進制字符串,而不是一個XML字符串。 Firebird(2.5)該字段被定義爲LONG。ibase_query導致十六進制字符串,而不是XML字符串

任何想法,這可能是什麼原因造成的? 使用GUI進行檢索時(例如:FlySpeed)將檢索完整的XML字符串。但在PHP 7上將檢索一個HEX字符串。

在此先感謝。

+2

Firebird沒有稱爲'LONG'的類型,這意味着您有一個自創的域名爲'LONG'。您需要顯示所涉及的表和域的實際代碼和DDL。 –

+0

我的不好..字段類型是XML_DATA_STRING ...它似乎是一個自創的域,對嗎? – pmoreira

+0

我們都不知道這個域名。來自Mark的評論:「你需要顯示所涉及的表和域的實際代碼和DDL。」 –

回答

0

通過你的BLOB字段這個功能

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

找到一種方法來檢索所有必要的字段作爲文本字符串。

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

現在數據被檢索爲文本字符串。 儘管執行時間現在更長。

相關問題