SQL返回“变量对象”;如何转换为常规数据


SQL return "variant Object" how to convert to regular data

我是一个web开发人员,但我不太了解sql,现在我可以连接到服务器没有问题,但它返回

variant Object

但是在数据库中info有数据值。我如何转换它?

[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进行连接。连接

我不得不把

(string)

从手册:

这个变量相当于PHP的zval;它是一个结构它可以包含具有一系列不同可能类型的值。的COM扩展提供的VARIANT类允许您拥有更多控制PHP向COM传递值的方式。

:

PHP 5采用了一种更简单的方法来处理变量;当返回一个值或获取一个变量属性,该变量是转换为PHP值仅当有直接映射之间不会导致信息丢失的类型。在其他方面在这种情况下,结果将作为VARIANT类的实例返回。你可以强制PHP将变量转换或计算为PHP本机类型吗通过显式或隐式地使用强制转换操作符来强制转换为通过打印。您可以使用各种不同的函数对变量执行算术运算,而不强制使用转换或冒丢失数据的风险。

你没有张贴代码,但这意味着你通常可以打印它:

echo $result;

参考此帮助-我使用它作为处理php中的变量的一种方式。如何从PHP中COM对象返回的多维变量数组中读取?

我已经纠结这个问题一段时间了,并找到了一个适合我的解决方案。因此,假设我们需要通过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...