在Amazon SimpleDB PHP SDK中测试空结果集

时间:2011-06-25 14:52:28

标签: php amazon amazon-simpledb

我一直在努力将移动应用程序与SimpleDB集成,并且在测试Select空白的响应方面遇到了问题。我不是一个OO PHP程序员,我很难看清代码。

以下是获取我需要的所有项目的相关代码:

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()为$ item)”

根据SDK Docs,select()返回一个CFResponse,其中$ results-> body是一个SimpleXML文档。我已经尝试了一些方法来计算SimpleXML文档中的子对象,例如“$ results-> body-> SelectResult-> count()”,但这似乎不起作用。

问题:
测试此结果空虚的适当方法是什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

您认为count()功能可以正常工作,但似乎没有做正确的事情。奇怪的是......

答案 1 :(得分:0)

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

  1. 您可以查看属性地图的大小
  2. 选择结果>>获取商品>>检查属性MAP的大小

    1. 您可以检查选择结果为空(不确认是否会发生)