测试AmazonSimpleDBPHPSDK中的空结果集



我一直在尝试将移动应用程序与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()as$Item)"。

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

问题:
测试这个结果是否为空的合适方法是什么?

试试这个:

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

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

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

  1. 您可以检查属性映射的大小

选择结果>>获取项目>>检查属性MAP 的大小

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

相关内容

  • 没有找到相关文章

最新更新