我有一个查询返回一个十六进制字符串,而不是一个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。” –