我有一個查詢返回一個十六進制字符串,而不是一個XML字符串。 Firebird(2.5)該字段被定義爲LONG。ibase_query導致十六進制字符串,而不是XML字符串
任何想法,這可能是什麼原因造成的? 使用GUI進行檢索時(例如:FlySpeed)將檢索完整的XML字符串。但在PHP 7上將檢索一個HEX字符串。
在此先感謝。
我有一個查詢返回一個十六進制字符串,而不是一個XML字符串。 Firebird(2.5)該字段被定義爲LONG。ibase_query導致十六進制字符串,而不是XML字符串
任何想法,這可能是什麼原因造成的? 使用GUI進行檢索時(例如:FlySpeed)將檢索完整的XML字符串。但在PHP 7上將檢索一個HEX字符串。
在此先感謝。
通過你的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;
}
我會嘗試一個以及...但這會增加每個服務器上的連接時間(我必須連接到140 +),對嗎?並且還增加其他服務器上的負載而不是抓取數據的負載,對? – pmoreira
@pmoreira blob無論如何都存儲在表格之外,所以無論何時您接觸到它,它總是一個額外的連接。唯一的另一種方法是將blob字段轉換爲查詢中的varchar(nn)。但是varchar字段長度受限制。 –
找到一種方法來檢索所有必要的字段作爲文本字符串。
while ($row = ibase_fetch_assoc($sth,IBASE_TEXT)) {
$res[] = $row;
}
現在數據被檢索爲文本字符串。 儘管執行時間現在更長。
Firebird沒有稱爲'LONG'的類型,這意味着您有一個自創的域名爲'LONG'。您需要顯示所涉及的表和域的實際代碼和DDL。 –
我的不好..字段類型是XML_DATA_STRING ...它似乎是一個自創的域,對嗎? – pmoreira
我們都不知道這個域名。來自Mark的評論:「你需要顯示所涉及的表和域的實際代碼和DDL。」 –