2013-04-15 39 views
0

我們使用Wordpress函數$ wpdb-> get_results(SQL)進行了令人討厭的數據庫調用。

在PHP中接收到結果後,我們需要對結果進行一些更改。

因此,誰能告訴我怎麼可以:

1)從()返回的對象get_results刪除特定行。

2)更改返回對象中特定行中特定列的值。

I.e.如果返回的對象是$ nastyData,我們需要:

1)從$ nastyData

2)更改在$ nastyData特定行特定的列的值刪除特定行,例如$ nastyData->名稱爲特定的行。

任何想法?我曾考慮過make_get_results()以數組的形式返回數據,但這會在我們的代碼的其他地方(代碼期望接收對象的地方)中產生問題。

感謝, 的Mads

回答

1

首先,你「討厭的數據庫調用」應進行優化,以少討厭。更具體地說,只查詢你想要的結果,這樣你就不必刪除後綴。這是最好的解決方案。

如果您堅持嘗試修改對象,這是一種解決方法。根據the documentation,返回對象時,它們以兩種方式返回:

OBJECT - 結果將作爲行對象的數字索引數組輸出。

OBJECT_K - 將結果作爲行對象的關聯數組輸出,使用第一列的值作爲關鍵字(重複項將被丟棄)。

$results = $wpdb->get_results($nastySQL); 

foreach($results as $index => $result) 
{ 
    // Change name column to FirstName using copy and delete 
    $tmp = $result->name; 
    unset($result->name); 
    $result->FirstName = $tmp; 

    // Remove specific row 
    if($result->name == "Tom") 
    { 
     unset($results[$index]); 
    } 
} 

所以,明知結果是對象的數組,我們可以使用foreach結構得到每個單獨的實例