2011-06-25 44 views
0

我一直在玩與SimpleDB集成移動應用程序,並且在測試選擇響應爲空時遇到問題。我並不是一個OO PHP程序員,並且通過代碼看起來很困惑。在Amazon SimpleDB中測試空結果集PHP SDK

下面是相關的代碼來獲取所有的項目,我需要:

foreach ($duuids as $duuid) { 
    $results = null; 
    $select_expression = "SELECT * FROM `thestore` WHERE thing IS NOT NULL AND duuid='" . $duuid . "' ORDER BY thing DESC LIMIT 100"; 

    $next_token = null; 

    do { 
    if ($next_token) 
    { 
     $results = $sdb->select($select_expression, array(
      'NextToken' => $next_token, 
     )); 
    } 
    else 
    { 
     $results = $sdb->select($select_expression); 
    } 

     foreach ($results->body->Item() as $item) { 
     array_push($items, $item); 
     } 


     $next_token = isset($results->body->SelectResult->NextToken) 
     ? (string) $results->body->SelectResult->NextToken 
     : null; 
    } 
    while ($next_token); 
} 

我的問題是,有時候沒有一個duuid還上傳過任何數據,所以結果集爲空,打破了「 foreach($ results-> body-> Item()as $ item)「在那裏。

根據SDK Docs,select()返回一個CFResponse,其中$ results-> body是一個SimpleXML文檔。我已經嘗試了一些方法來計算SimpleXML文檔中的子對象,如「$ results-> body-> SelectResult-> count()」,但似乎沒有工作。

問題:
什麼是測試此結果的空白的適當方法?

回答

1

試試這個:

if($results->body->SelectResult->Item()){ 
    // process the children 
} 

你會覺得count()功能會工作的權利,但它似乎沒有做正確的事。奇怪的是......

+0

工作。謝謝,費米。 – Stateful

0

我不是PHP程序員,但可以給你一些想法 -

  1. 您可以檢查屬性地圖的大小

選擇結果>>找項目>>檢查屬性貼圖的大小

  1. 你可以檢查null選擇的結果(未證實是否會發生)