2011-06-25 1 views
0

J'ai joué avec l'intégration d'une application mobile avec SimpleDB et j'ai un problème pour tester une réponse Select pour le vide. Je ne suis pas un programmeur OO PHP et je suis confus en regardant le code.Test du jeu de résultats vide dans Amazon SimpleDB PHP SDK

Voici le code correspondant pour saisir tous les éléments dont j'ai besoin:

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); 
} 

Mon problème est que, parfois, il n'y a pas de données encore été téléchargée pour une duuid de sorte que le jeu de résultats est vide, ce qui rompt le " foreach ($ results-> body-> Item() comme $ item) "là-haut.

Selon le document SDK, select() renvoie une CFResponse dans laquelle $ results-> body est un document SimpleXML. J'ai essayé certaines méthodes pour compter les objets enfants dans un document SimpleXML comme "$ results-> body-> SelectResult-> count()" mais cela ne semble pas fonctionner.

Question:
Quelle est la manière appropriée pour tester le vide de ce résultat?

Répondre

1

Essayez ceci:

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

Vous penseriez que la fonction count() fonctionnerait bien, mais il semble ne pas faire la bonne chose. Odd que ...

+0

Cela a fonctionné. Merci, Femi. – Stateful

0

Je ne suis pas programmeur PHP mais pouvez-vous donner une idée -

  1. vous pouvez vérifier la taille de la carte d'attribut

Résultats Sélectionnez >> Get Articles >> Voir la taille de l'attribut MAP

  1. vous pouvez vérifier sélectionner les résultats pour null (pas de confirmer si elle sera arrivé)
Questions connexes