SQL返回“variant Object”如何转换为常规数据

时间:2013-04-24 00:39:59

标签: php sql

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

variant Object

但在db中,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.Connection进行连接

4 个答案:

答案 0 :(得分:1)

我必须把

(string)

并且有效。

答案 1 :(得分:0)

来自the manual

  

VARIANT是COM相当于PHP zval;这是一个结构   可以包含具有各种可能类型的值。该   COM扩展提供的VARIANT类允许您拥有更多   控制PHP将值传递给COM的方式。

  

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

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

echo $result;

答案 2 :(得分:0)

请参阅此内容以获取帮助 - 我将其用作处理php变体的一种方式。 How do you read from a multidimensional variant array returned from a COM object in PHP?

答案 3 :(得分: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...