2013-04-24 47 views
0

IM Web開發人員,但我不知道很多關於SQL,現在我可以連接到服務器沒有問題,但它返回SQL返回「變種對象」如何轉換爲常規數據

variant Object 

但在db該信息具有數據值。我如何轉換它?

[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

回答

1

連接的方式,我不得不把

(string) 

和它的工作。

0

the manual

的變體是COM的相當於PHP的zval的;它是一個結構 ,它可以包含一系列不同可能類型的值。由COM擴展提供的VARIANT類允許您對PHP向COM傳遞值以及從COM傳遞值的方式擁有更多的控制權 。

和:

PHP 5到需要處理變體更簡單的方法;當 返回值或獲取變體屬性時,只有在不會導致信息丟失的類型之間存在直接映射時,纔會將變體 轉換爲PHP值。在所有其他 的情況下,結果將作爲VARIANT類的實例返回。 You 可以強制PHP通過明確使用強制轉換運算符或者通過將其打印到 字符串來打印來將該變體轉換或評估爲PHP本機類型 。您可以使用各種各樣的變體函數 來對變體執行算術運算,而不會強制執行 轉換或者有丟失數據的風險。

你沒有張貼代碼,但是這意味着你可以通常只打印:

echo $result; 
+0

阿爾瓦羅·岡薩雷斯我怎麼你會建議去了解這個問題,我在這裏張貼http://stackoverflow.com/questions/42295574/how-to-convert-8209-array-object-variant-to-vt-變種 – 2017-02-17 20:45:47

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)現在

$緩衝陣願與字符串類型的值。

foreach($buffer as ..... blabla... 
相關問題