2013-07-22 44 views
0

我正在訪問PHP中的mssql數據庫並將連接創建爲新的COM()對象。我的查詢運行得很好。當我在Microsoft SQL Server 2008中進行查詢時,一切看起來很棒,日期/時間顯示在列中並且可讀。PHP adodb COM記錄集返回變體:__ set_state日期/時間,我怎麼才能將它們作爲字符串?

但是當我運行相同的查詢並返回PHP的結果,我經歷的結果像這樣遍歷:

$selected_fields = array("FS.fund_name", "M.media_id", "MT.media_type_name", "modified_date", "file_upload_date", "issued_date", "filename"); 
//query goes here 
$record_set = new COM("ADODB.Recordset"); 
while(!$record_set->EOF){ //loop through query results and add to inline cache variable 
    $temp_record = array(); 
    foreach($selected_fields as $fieldname){ //go through fields and add to array 
     $fieldname_array = explode(".", $fieldname); //separate table and column 
     $fieldname = $fieldname_array[sizeof($fieldname_array)-1]; 
     $temp_record[$fieldname] = $record_set->fields[$fieldname]->value; 
    } 
    print_r($temp_record); 
    $rs_array[] = $temp_record; 
    $record_set->movenext(); 
} 

當我打印的每張$ temp_record,他們最終會看起來像這樣:

Array ([fund_name] => TEST [media_id] => 1001 [media_type_name] => 8937 Tax Forms [modified_date] => variant Object [file_upload_date] => variant Object [issued_date] => variant Object [filename] => form8937test.pdf) 

所以日期是某種物體的,我不知道如何訪問它們在PHP。當我去把它們保存爲一個緩存文件,他們有這樣的價值:

variant::__set_state(array()) 

我怎麼能retrive的日期/時間的格式,然後我就可以操縱使用PHP?我想按年篩選它們,並按照最近的時間對它們進行排序。

+0

根據[Variant對象(http://php.net/manual/en/ class.variant.php)文檔,您應該可以通過'$ temp_record ['modified_date'] - > value;'或'$ val =(string)$ temp_record ['modified_date'];' –

+0

它可以訪問它它工作!我所要做的就是把它當作一個字符串。謝謝!現在 - 在迭代過程中,我可以檢查是否需要投射它嗎? –

回答

1

Variant Object文檔,你應該能夠通過

$temp_record['modified_date']->value; 

$val = (string)$temp_record['modified_date']; 

訪問它從同一個文檔:

的變體轉換爲PHP只有在直接 之間的映射之間的映射不會導致信息丟失 。在所有其他情況下,結果將返回爲VARIANT類的實例 。

所以要檢查是否需要投,只需檢查是否有Variant類的一個對象:

if (is_object($var) && $var instanceof Variant) { 
    $val = (string)$var; 
} else { 
    $val = $var; 
} 
相關問題