2016-11-21 1 views
0

xcodeでPHPスクリプトを使用して3つの異なるテーブル(MySQL)からデータを取得しようとしています。異なるテーブルからJSONオブジェクトを識別する

私はあるテーブルから要素を取得する方法を知っていますが、xcodeで同じPHPスクリプトとNSURLSessionを使用して2つのテーブルからデータを取得できるように、このメソッドを拡張する方法がわかりません。一つのテーブル(作業)用

私のPHPスクリプト:

$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 

if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno(). ') ' . mysqli_connect_error()); 
} 

$sql = "SELECT * FROM table1"; 
$test = $mysqli->query($sql); 
$Nrows = $test->num_rows; 
$resultArray = array(); 

if ($result = mysqli_query($mysqli, $sql)) { 
    while ($row = $result->fetch_assoc()) { 
     $resultArray[] = $row; 
    } 
    echo json_encode($resultArray); 
} 
else { 
    echo 'oups.'; 
} 

は、今の問題は、私は他の二つのテーブルと同じことをやりたいということです。

getElementFunction.php

<?php 
function getElements() 
{ 
    $test = $mysqli->query($sql); 
    $Nrows = $test->num_rows; 
    $resultArray = array(); 

    if ($result = mysqli_query($mysqli, $sql)) { 
     while ($row = $result->fetch_assoc()) { 
      $resultArray[] = $row; 
     } 
     echo json_encode($resultArray); 
    } 
    else { 
     echo 'oups.'; 
    } 
} 
?> 

main_file.php:

私は別のPHPファイル(getElementFunction.phpを言う)と、メインファイルでこのメソッドを呼び出すには、私のフェッチ方式を取り入れてみました

しかし、私はそれが正しいのかどうか、私はxcodeスクリプトで使用するために返される別のjsonオブジェクトを「フラグする」ことができません。 1つのURLで1つのループでフェッチ処理を実行したいとします。念のために

、私はどのテーブルから指定する方法が必要になり、私のObjective-Cのスクリプトは、JSONオブジェクトが返されます... NSURLSessionと

Xcodeのスクリプト:

id jsonObject = [NSJSONSerialization JSONObjectWithData:_downloadedData options:NSJSONReadingAllowFragments error:&error]; 

     if ([jsonObject isKindOfClass:[NSArray class]]) { 

      NSArray *deserializedArray = (NSArray *)jsonObject; 

      if (deserializedArray.count > 0) { 

       dispatch_async(dispatch_get_main_queue(), ^{ 

        ... 
       } 

をした場合誰かが私を助けることができました...

ありがとう!

答えて

1

明らかにわかりませんが、getElements()でforeachを試すことができます。

私は意味:

function getElements(array $allSQL) 
{ 
    //Final array to json_encode 
    $finalResultsArray = array(); 

    foreach($allSQL as $tableName => $sqlStatement) { 
      $arrayResults = array(); 

      $test = $mysqli->query($sqlStatement); 
      $Nrows = $test->num_rows; 

      if ($result = mysqli_query($mysqli, $sqlStatement)) { 
       while ($row = $result->fetch_assoc()) { 
        $arrayResults[] = $row; 
       } 
       //echo json_encode($arrayResults); 
       $finalResultsArray[$tableName] = $arrayResults; 
      } 
      else { 
       echo 'oups.'; 
      } 

    } 

    echo json_encode($finalResultsArray); 
} 

この部分:本になっ

$sql = "SELECT * FROM table1"; 
getElements() // --> how can I flag the json object as being returned from table 1 

$sql = "SELECT * FROM table2"; 
getElements() // --> how can I flag the json object as being returned from table 2 

$sql = "SELECT * FROM table3"; 

getElements() // --> how can I flag the json object as being returned from table 3 

$sql1 = "SELECT * FROM table1"; 

$sql2 = "SELECT * FROM table2"; 

$sql3 = "SELECT * FROM table3"; 

getElements(["table1"=> $sql1, "table2" => $sql2, "table3" => $sql3]); 
+0

それは非常に良さそうに見えますが、あなたに感謝し、私は戻って、任意のデータを得ることはありません。私は応答(NSURLSession didReceiveResposne)を持っていますが、データは返っていません... – Trichophyton

+0

不幸にも、私はXCodeに慣れていません。問題がどこであるかを識別するために 'getElements()'の 'PHP'レスポンスをダンプしようとしてください。 _(これは私のforeachや 'JSON'オブジェクト( 'PHP'スクリプトによってレンダリングされる)から' NSJSONSerialization'オブジェクトに変換されますか?)_ – Delphine

+0

var_dump($ finalResultsArray);関数の本体に何も表示されません(空白ページ...)。 :-( – Trichophyton

関連する問題