0

我是一名网络开发人员,但我对 sql 了解不多,现在我可以连接到服务器没问题但它返回

variant Object

但在数据库中,该信息具有数据值。我怎样才能转换它?

[0] => Array
    (
        [0] =>      .0000
        [1] => 70042
        [2] => POLLERA LERGA C/CUERO EN CINTO
        [3] => 1
        [4] => 28
        [5] => variant Object

        [6] => INV02
        [7] => 
        [8] =>  
        [9] => variant Object

        [10] => variant Object

        [11] => variant Object

    )

顺便说一句,我正在与 ADODB.Connection 建立连接

4

4 回答 4

1

我不得不把

(string)

它奏效了。

于 2013-04-24T16:02:39.480 回答
0

请参阅此以获得帮助 - 我将其用作在 php 中处理变体的一种方式。如何从 PHP 中的 COM 对象返回的多维变量数组中读取?

于 2013-08-16T19:11:57.203 回答
0

手册

VARIANT 是 COM 的 PHP zval 等价物;它是一个结构,可以包含具有一系列不同可能类型的值。COM 扩展提供的 VARIANT 类允许您更好地控制 PHP 将值传入和传出 COM 的方式。

和:

PHP 5 采用更简单的方法来处理 VARIANT;在返回值或获取变体属性时,只有当类型之间存在不会导致信息丢失的直接映射时,变体才会转换为 PHP 值。在所有其他情况下,结果将作为 VARIANT 类的实例返回。您可以通过显式使用强制转换运算符强制 PHP 将变体转换或评估为 PHP 本机类型,或通过打印隐式强制转换为字符串。您可以使用范围广泛的变体函数对变体执行算术运算,而无需强制转换或冒丢失数据的风险。

您没有发布代码,但这意味着您通常可以打印它:

echo $result;
于 2013-04-24T16:07:52.143 回答
0

我已经为这个问题苦苦挣扎了一段时间,并找到了一个对我有用的解决方案。因此,假设我们需要通过 ADODB 从 MSSQL 数据库中返回每行四个值的记录集。这一切都归结为你在哪里转换数据类型!如果您在将(变体)值复制到您选择的变量(主要是一些数组)之前转换数据类型,它将起作用。

例子:

$buffer = array();

$sql = "SELECT col1, col2, col3, col4 FROM tbl_mydata WHERE col1 > 100";

$rec = OpenRecordset($sql); // connect to db, make your own!

while (!$rec->EOF){

    $buffer[] = array((string)$rec->fields[0], (string)$rec->fields[1], (string)$rec->fields[2], (string)$rec->fields[3]);

    $rec->MoveNext();
}

closeRecordset($rec);

对于 ADOdb 文档,请参见此处的手册(http://adodb.org/dokuwiki/doku.php?id=v5:userguide:userguide_index

现在您的$buffer数组已准备好字符串类型值。

foreach($buffer as ..... blabla...
于 2017-03-22T16:24:22.210 回答