2016-07-26 12 views
1

json 배열에 mysql 레코드를 만들지 만 json 데이터 집합에 문제가있는 것으로 보입니다. PFB 코드 : -JSON 데이터 집합 구조

JSON 출력은 오는 : - :

[{ 
    "ID": "1", 
    "Coupon_ID": "ABC1", 
    "Campaign_ID": "353", 
    "Campaign_Name": "Test1", 
    "Title": "Test1", 
    "Description": "Test1", 
    "Category": "Test1", 
    "Type": "Coupon", 
    "Type_Value": "1231", 
    "Tracking_URL": "http://abc1.com", 
    "Added_Date": "2016-07-13", 
    "Expiry_Date": "2016-07-28" 
} 
{ 
    "ID": "2", 
    "Coupon_ID": "ABC2", 
    "Campaign_ID": "3532", 
    "Campaign_Name": "Test2", 
    "Title": "Test2", 
    "Description": "Test2", 
    "Category": "Test2", 
    "Type": "Coupon", 
    "Type_Value": "1232", 
    "Tracking_URL": "http://abc2.com", 
    "Added_Date": "2016-07-13", 
    "Expiry_Date": "2016-07-28" 
}] 

내 말은 [] 대신 각각의 기록을 위해 오는이 브래킷이 올한다 -

[{ 
    "ID": "1", 
    "Coupon_ID": "ABC1", 
    "Campaign_ID": "353", 
    "Campaign_Name": "Test1", 
    "Title": "Test1", 
    "Description": "Test1", 
    "Category": "Test1", 
    "Type": "Coupon", 
    "Type_Value": "1231", 
    "Tracking_URL": "http://abc1.com", 
    "Added_Date": "2016-07-13", 
    "Expiry_Date": "2016-07-28" 
}][ 
{ 
    "ID": "2", 
    "Coupon_ID": "ABC2", 
    "Campaign_ID": "3532", 
    "Campaign_Name": "Test2", 
    "Title": "Test2", 
    "Description": "Test2", 
    "Category": "Test2", 
    "Type": "Coupon", 
    "Type_Value": "1232", 
    "Tracking_URL": "http://abc2.com", 
    "Added_Date": "2016-07-13", 
    "Expiry_Date": "2016-07-28" 
}] 

나는 이런 식으로 뭔가를 원하는 한 번만.

PHP 코드 : -

<?php 
    header('Content-type: application/json'); 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "couponsdeals"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $apikey = $_GET['API_KEY']; 
    $sql = "SELECT AFF_ID FROM api WHERE API_KEY= '$apikey' "; 

    //$sql1= "SELECT ID,Coupon_ID,Campaign_ID,Campaign_Name,Title,Description,Category,Type,Type_Value,Tracking_URL,Added_Date,Expiry_Date FROM couponcode_table "; 

    $sql1 = "SELECT * FROM couponcode_table "; 
    $result = $conn->query($sql); 
    $result1 = $conn->query($sql1); 
    if ($result) { 
     // output data of each row 
     while ($row = $result->fetch_assoc()) { 
      $data = $row["AFF_ID"]; 
      if ($result1) { 
       while ($row1 = $result1->fetch_assoc()) { 
        $data1 = $row1["Tracking_URL"]; 
        $mydata = explode("&", $data1); 
        if (isset($mydata[2])) { 
         $json1 = array(); 
         $mydata2 = $mydata[0] . "&aff_id=" . $data . "&" . $mydata[2]; 
         $values = array(
          'ID' => $row1['ID'], 
          'Coupon_ID' => $row1['Coupon_ID'], 
          'Campaign_ID' => $row1['Campaign_ID'], 
          'Campaign_Name' => $row1['Campaign_Name'], 
          'Title' => $row1['Title'], 
          'Description' => $row1['Description'], 
          'Category' => $row1['Category'], 
          'Type' => $row1['Type'], 
          'Type_Value' => $row1['Type_Value'], 
          'Tracking_URL' => $mydata2, 
          'Added_Date' => $row1['Added_Date'], 
          'Expiry_Date' => $row1['Expiry_Date'] 

         ); 
         array_push($json1, $values); 
         echo json_encode($json1, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 
        } else { 
         $json = array(); 
         $mydata1 = $mydata[0] . "&aff_id=" . $data; 
         $value = array(
          'ID' => $row1['ID'], 
          'Coupon_ID' => $row1['Coupon_ID'], 
          'Campaign_ID' => $row1['Campaign_ID'], 
          'Campaign_Name' => $row1['Campaign_Name'], 
          'Title' => $row1['Title'], 
          'Description' => $row1['Description'], 
          'Category' => $row1['Category'], 
          'Type' => $row1['Type'], 
          'Type_Value' => $row1['Type_Value'], 
          'Tracking_URL' => $mydata1, 
          'Added_Date' => $row1['Added_Date'], 
          'Expiry_Date' => $row1['Expiry_Date'] 
         ); 
         array_push($json, $value); 
         echo json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 
        } 
       } 
      } 
     } 
    } elseif (!$result) { 
     echo "0 results"; 
    } 
    $conn->close(); 
?> 
+0

는 루프로 json_encode를 사용하지 않는 보여줍니다. 대신 배열을 임시 배열 $ resultArray [] = array (...)에 저장하십시오. 루프 후, echo json_encode ($ resultArray) – vishwakarma09

+0

그냥 $ json1 = array() 초기화; 외부 루프 –

답변

0

당신은 초기화 /를하는 동안 밖에서 JSON 배열 에코 필요 루프 : 난 그냥 희망이 코드를 사용해, 코드를 변경

$json = array(); 
while(....) { 
    while(....) { 
     //....... 
     array_push($json, $value); 
     //....... 
    } 
} 
echo json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 
0

당신 것 예상 밖으로 나가. 당신은 루프 내에서 생성 된 모든 데이터를 얻을하려는 경우

<?php 
header('Content-type: application/json'); 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "couponsdeals"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$apikey = $_GET['API_KEY']; 
$sql = "SELECT AFF_ID FROM api WHERE API_KEY= '$apikey' "; 

//$sql1= "SELECT ID,Coupon_ID,Campaign_ID,Campaign_Name,Title,Description,Category,Type,Type_Value,Tracking_URL,Added_Date,Expiry_Date FROM couponcode_table "; 

$sql1= "SELECT * FROM couponcode_table "; 

$result = $conn->query($sql); 

$result1 = $conn->query($sql1); 

if ($result) { 

    // output data of each row 

    $json = array(); 


    while($row = $result->fetch_assoc()) { 

     $data= $row["AFF_ID"]; 

     if($result1){ 

      while($row1 = $result1->fetch_assoc()) { 


       $data1=$row1["Tracking_URL"]; 



       $mydata = explode("&",$data1); 


       if(isset($mydata[2])){ 

        $mydata2= $mydata[0]."&aff_id=".$data."&".$mydata[2]; 

        $values =array(
          'ID' => $row1['ID'], 
          'Coupon_ID' => $row1['Coupon_ID'], 
          'Campaign_ID' => $row1['Campaign_ID'], 
          'Campaign_Name' => $row1['Campaign_Name'], 
          'Title' => $row1['Title'], 
          'Description' => $row1['Description'], 
          'Category' => $row1['Category'], 
          'Type' => $row1['Type'], 
          'Type_Value' => $row1['Type_Value'], 
          'Tracking_URL' =>$mydata2, 
          'Added_Date' => $row1['Added_Date'], 
          'Expiry_Date' => $row1['Expiry_Date'] 
         ); 


        array_push($json, $values); 

       } else { 

        $mydata1= $mydata[0]."&aff_id=".$data; 

        $value =array(
          'ID' => $row1['ID'], 
          'Coupon_ID' => $row1['Coupon_ID'], 
          'Campaign_ID' => $row1['Campaign_ID'], 
          'Campaign_Name' => $row1['Campaign_Name'], 
          'Title' => $row1['Title'], 
          'Description' => $row1['Description'], 
          'Category' => $row1['Category'], 
          'Type' => $row1['Type'], 
          'Type_Value' => $row1['Type_Value'], 
          'Tracking_URL' =>$mydata1, 
          'Added_Date' => $row1['Added_Date'], 
          'Expiry_Date' => $row1['Expiry_Date'] 
         ); 

         array_push($json, $value); 

       } 

      } 

     } 
    } 

    echo json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);  
} 
elseif(!$result) { 

    echo "0 results"; 

} 

$conn->close(); 
?> 
0
, 당신은 변수에 모든 데이터를 저장해야하고 스크립트의 끝까지과 루프의 외부 출력 echo $whatever; 다를 수 있습니다. 당신이 한 번에 따라 모든 데이터를 가지고 확신 그런 식으로 ... 당신의 약간 수정 및 주석 코드는 아래에 모두 더 나은
<?php 
     header('Content-type: application/json'); 
     $servername  = "localhost"; 
     $username  = "root"; 
     $password  = ""; 
     $dbname   = "couponsdeals"; 

     // CREATE A VARIABLE THAT WOULD HOLD ALL THE DATA (ARRAY GENERATED IN THE LOOP) 
     // INITIALIZE IT TO THE DEFAULT "FAILURE" MESSAGE..."0 Results" 
     // THAT WAY; YOU WOULDN'T NEED ANY else if() CLAUSE... 
     $jsonData  = array("message"=> "0 results"); 

     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 

     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $apikey  = $_GET['API_KEY']; 
     $sql  = "SELECT AFF_ID FROM api WHERE API_KEY= '$apikey' "; 
     $sql1  = "SELECT * FROM couponcode_table "; 
     $result  = $conn->query($sql); 
     $result1 = $conn->query($sql1); 
     $json  = array(); 
     $json1  = array(); 

     if ($result) { 
      // output data of each row 
      while($row = $result->fetch_assoc()) { 
       $data = $row["AFF_ID"]; 
       if($result1){ 
        while($row1 = $result1->fetch_assoc()) { 
         $data1 = $row1["Tracking_URL"]; 
         $mydata = explode("&",$data1); 

         if(isset($mydata[2])){ 
          $json1  = array(); 
          $mydata2 = $mydata[0]."&aff_id=".$data."&".$mydata[2]; 
          $values  = array(
           'ID'   => $row1['ID'], 
           'Coupon_ID'  => $row1['Coupon_ID'], 
           'Campaign_ID' => $row1['Campaign_ID'], 
           'Campaign_Name' => $row1['Campaign_Name'], 
           'Title'   => $row1['Title'], 
           'Description' => $row1['Description'], 
           'Category'  => $row1['Category'], 
           'Type'   => $row1['Type'], 
           'Type_Value' => $row1['Type_Value'], 
           'Tracking_URL' => $mydata2, 
           'Added_Date' => $row1['Added_Date'], 
           'Expiry_Date' => $row1['Expiry_Date'] 
          ); 
          // PUSH DATA TO THE $json1 VARIABLE 
          // AND DO NOT OUTPUT IT HERE YET... DIFFER IT 
          // TO THE END OF THE SCRIPT. 
          array_push($json1, $values); 

         }else{ 
          $json  = array(); 
          $mydata1 = $mydata[0]."&aff_id=".$data; 
          $value  = array(
           'ID'   => $row1['ID'], 
           'Coupon_ID'  => $row1['Coupon_ID'], 
           'Campaign_ID' => $row1['Campaign_ID'], 
           'Campaign_Name' => $row1['Campaign_Name'], 
           'Title'   => $row1['Title'], 
           'Description' => $row1['Description'], 
           'Category'  => $row1['Category'], 
           'Type'   => $row1['Type'], 
           'Type_Value' => $row1['Type_Value'], 
           'Tracking_URL' => $mydata1, 
           'Added_Date' => $row1['Added_Date'], 
           'Expiry_Date' => $row1['Expiry_Date'] 
          ); 
          // PUSH DATA TO THE $json VARIABLE 
          // AND DO NOT OUTPUT IT HERE YET... DIFFER IT 
          // TO THE END OF THE SCRIPT... 
          array_push($json, $value); 
         } 
        } 

       } 
      } 
      // NOW; OVERRIDE THE $jsonData VARIABLE WE CREATED ABOVE 
      // AND CREATE 2 ELEMENTS WITHIN IT 'json1' & 'json2' 
      // TO HOLD THE VALUES GENERATED WITHIN THE IF & ELSE CLAUSE RESPECTIVELY:SET ITS VALUE TO THE $json 
      $json  = (!empty($json)) ? $json : array("message"=>"Empty Data-set for json"); 
      $json1  = (!empty($json1)) ? $json1 : array("message"=>"Empty Data-set for json1"); 

      // ASSIGN DATA FROM $json & $json1 TO THE $jsonData ARRAY... 
      $jsonData = array(
       "json" => $json, 
       "json1" => $json1, 
      ); 
     } 
     // NO NEED FOR ELSE CLAUSE BECAUSE IF THE "IF CLAUSE" DOES NOT RUN; 
     // WE HAVE A DEFAULT FOR THE $jsonData WHICH HAS A MESSAGE KEY 
     // CONTAINING THE DEFAULT MESSAGE WITHIN AN ARRAY... 

     // CLOSE DB CONNECTION 
     $conn->close(); 

     // ECHO OUT THE JSON-ENCODED DATA AND EXIT THE SCRIPT USING DIE... 
     die(json_encode($jsonData, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));