2016-09-18 13 views
0

mysql dbからデータを取得するPHPスクリプトがあります。 すべて問題なく動作しますが、私の問題はこの$result = $dao->joinedEvents($userId);が数値の配列を返し、これを実行することです。すべてのIDとこのスクリプトでID番号が$secondResult = $dao->joinedEventsInfo($receivedIds);になりました。すべての要素に対してPHPアクションを実行します。

これは私のPHPスクリプトの一部です:

$userId = htmlentities($_REQUEST["userId"]); 

$result = $dao->joinedEvents($userId); //This is getting the IDs array 

if(!empty($result)) { 


$receivedIds = $result["event_id"]; 
$ids = explode(",", $receivedIds); 

foreach($ids as $id){ 
    $secondResult = $dao->joinedEventsInfo($id); 
    if(!empty($secondResult)) { 
     $returnValue["finalResult"][] = $secondResult;  
    } else {  
     $returnValue["status"] = "error"; 
     $returnValue["message"][] = "Could not find records for id" . $id; 
    } 
} 


} else { 
    $returnValue["status"] = "Empty error"; 
    $returnValue["message"] = "Could not find records"; 
} 


$dao->closeConnection(); 
echo json_encode($returnValue); 

そして、これがjoinedEventsスクリプトです:

public function joinedEvents($userId){ 

    $returnValue = array(); 

    $sql = "SELECT event_id from MyTable WHERE userId= '$userId' LIMIT 0 , 30"; 
     $statement = $this->conn->prepare($sql); 
     if (!$statement) 
      throw new Exception($statement->error); 

     $statement->execute(); 

     $result = $statement->get_result(); 

     while ($myrow = $result->fetch_assoc()) 
     { 
      $returnValue[] = $myrow; 
     } 

     return $returnValue; 
    } 

これはjoinedEventsInfoスクリプトです:

public function joinedEventsInfo($eventId){ 

    $returnValue = array(); 

    $sql = "SELECT * FROM Events WHERE eventId = '$eventId' LIMIT 0 , 30"; 

    $statement = $this->conn->prepare($sql); 
    if (!$statement) 
     throw new Exception($statement->error); 

    $statement->execute(); 

    $result = $statement->get_result(); 

    while ($myrow = $result->fetch_assoc()) 
    { 
     $returnValue[] = $myrow; 
    } 

    return $returnValue; 

} 

編集:ター理由私には2つのテーブルがあるということが必要です。最初のものにはIDだけがあり、2番目には情報があります。最初にIDを取得する必要があるので、今受信したすべてのIDのデータを取得する必要があります。

ありがとう、私は完全に固執しています。

+0

この '$ receivedIds'がであるどのような形式では? 'var_dump($ receivedIds);'を実行して、何が表示されているか教えてください。 –

+0

申し訳ありませんが、私は今PC上にいませんが、このような配列を返すと思います: "1,2,3,6" –

+0

* hmm *。あなたのコメントと公正な前提に基づいて、私は以下の答えを掲示しました。うまくいけば、これで問題は解決します。 –

答えて

2

更新されたコードスニペットと、以下の議論に基づいて、$resultが実際に配列され、かつソリューションがあることが判明した:

$userId = htmlentities($_REQUEST["userId"]); 
$result = $dao->joinedEvents($userId); 

if(count($result)){ 
    foreach($result as $array){ 
     $event_id = $array['event_id']; 
     $secondResult = $dao->joinedEventsInfo($event_id); 
     if(!empty($secondResult)) { 
      $returnValue["finalResult"][] = $secondResult;  
     } else {  
      $returnValue["status"] = "error"; 
      $returnValue["message"][] = "Could not find records for id: " . $event_id; 
     } 
    } 
}else { 
    $returnValue["status"] = "Empty error"; 
    $returnValue["message"] = "Could not find records"; 
} 
$dao->closeConnection(); 
echo json_encode($returnValue); 
+0

申し訳ありませんが、それは文字列です " –

+0

@ 0ndre_うん、なしで1,2,3,4を返します。上記のコードスニペットを使用してアプリケーションをテストすると、これで問題が解決されると思います。 –

+0

ありがとう:)私はできるだけ早くそれを行います。 –

1

array_map()を試しましたか? それはあなたが簡単に配列の各メンバのPHP関数を呼び出すことができます。

もう1つの方法は、返された結果の各行に対してwhileループのコードを実行する共通のwhile ($row = mysql_fetch_array($result))を使用することです。 mysql_fetch_arrayは、SQL接続に固有のものに変更する必要があります。

+0

OPが廃止され、危険な 'mysql_ *'関数を使用しているとは思わないでください。 **常に**を尋ねる、それはコメントのためのものです。 –

+0

私の例では、私が使用していないと確信していましたが、あなたのフィードバックに感謝します。 – tristansokol

関連する問題