0

次のようなiPhoneコードがあります

FMDatabase *database = [FMDatabase databaseWithPath:dbPath];
[database open];
NSString *sqlSelectQuery = @"SELECT * FROM drinks";

// Query result
FMResultSet *results = [database executeQuery:sqlSelectQuery];
while([results next])
{
    Drinks *drink = [[Drinks alloc] init];

    [drink setDrinkId:[results intForColumn:@"id"]];
    [drink setVenueId:[results intForColumn:@"venueId"]];
    [drink setName:[results stringForColumn:@"name"]];
    [drink setType:[results intForColumn:@"venueId"]];

    NSMutableArray *servingSizes = [[NSMutableArray alloc] init];
    NSString *sqlSelectQuery = [NSString stringWithFormat:@"SELECT * FROM servingSizes WHERE drinkId = %d", drink.drinkId];

    FMResultSet *servingResult = [database executeQuery:sqlSelectQuery];
    while([servingResult next])
    {
        Servings *serving = [[Servings alloc] init];

        [serving setDrinkId:[servingResult intForColumn:@"drinkId"]];
        [serving setServingId:[servingResult intForColumn:@"id"]];
        [serving setServingSize:[servingResult intForColumn:@"servingSize"]];
        [serving setPrice:[servingResult intForColumn:@"price"]];

        [servingSizes addObject:serving];
    }

    [drink setServingsArray:servingSizes];
    [drinksArray addObject:drink];
}

基本的に、このコードは組み込みデータベースを読み取り、オブジェクト DRINK を作成し、ドリンクの ID から、テーブルからオブジェクト Servings の配列を取得します。

とても簡単なことですが、PHPサーバー側で次のことをしたいです。

これが私のコードです

function GetAllDrinks() 
    {   
        try {

            $conn = $this->GetDBConnection();

            $statement = $conn->prepare('SELECT * FROM drinks');
            $statement->execute();

            if(!($row = $statement->fetchAll(PDO::FETCH_ASSOC))) 
            {
                return false;
            }

            foreach($row as $drink)
            {
               $drinkId  = $row->id;                
               $statement = $conn->prepare('SELECT * FROM servingTable WHERE id = :drinkId)');

                $statement->bindParam(':drinkId' , $drinkId, PDO::PARAM_INT);
                $statement->execute();

                if(($serve = $statement->fetchAll(PDO::FETCH_ASSOC))) 
                {
                    // WHAT TO DO HERE
                }
            }

            $conn = null;
            return $row;

        } catch(PDOException $e) {
                throw $e;
        }   
        return $row;
    }

すべてのJSON文字列を作成したいのですが、わかりませんどうすれば飲み物オブジェクトにサービングを追加できますか? 私はPHPの専門家ではないので、誰かに助けてもらいたいです

4

2 に答える 2

0
// Add &-sign to create a reference to $drinks
foreach($row as &$drink)
{
   $drinkId  = $row->id;                
   $statement = $conn->prepare('SELECT * FROM servingTable WHERE id = :drinkId)');

    $statement->bindParam(':drinkId' , $drinkId, PDO::PARAM_INT);
    $statement->execute();

    if(($serve = $statement->fetchAll(PDO::FETCH_ASSOC))) 
    {
        $drink['servings'] = $serve;
    }
}

これで、 に$rowはすべての飲み物があり、各飲み物にはフィールドがありますservings。JSON を取得するには:

echo json_encode($row);
于 2013-10-19T06:36:53.793 に答える