2014-09-26 59 views
-1

我需要從PDO中獲取PHP中的數據,並在數據傳輸過程中進行一些數據轉換。最好的變種是FETCH_CLASS模式和FETCH_FUNC模式。PDO FETCH_FUNC數據作爲關聯數組

FETCH_CLASS的問題是,每個屬性需要拋出__set()方法來獲得轉換或至少檢查是否需要轉換。而對於每行50列的40K行,則需要太多時間。

FETCH_FUNC對我來說很理想,因爲我一次獲得該行的所有列,可以進行一些轉換但唯一的問題是我沒有列名導致列值作爲參數進入函數並且唯一的獲取他們的方法是致電func_get_args()

所以一般的問題是 - >我怎樣才能在類的一些方法,功能,使用一些組合PDO FETCH模式作爲assoc數組,obj或一些像columnName-> columnValue結構一次獲取行數據?獲得結果後使用foreach是很長的 - 我想在調用pdo的方法fetchAll()方法

+0

請參閱Stack Overflow允許的範圍。 – cybermonkey 2014-09-26 08:21:26

回答

0

之後就已經獲得了轉換後的數據。對我來說,就像你對這件事的看法一樣,並且試圖變得太聰明。這會做得很好:

$data = []; 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $data[] = myTransformation($row); 
} 

換句話說,只是FETCH_ASSOC取,然後打電話給你的該結果的功能。