Php JSON数据集结构

Php JSON数据集结构,php,mysql,arrays,json,dataset,Php,Mysql,Arrays,Json,Dataset,我正在将mysql记录创建到json数组中,但json数据集似乎存在一些问题。PFB代码:- JSON输出即将到来:- [{ "ID": "1", "Coupon_ID": "ABC1", "Campaign_ID": "353", "Campaign_Name": "Test1", "Title": "Test1", "Description": "Test1", "Category": "Test1", "Type": "Cou

我正在将mysql记录创建到json数组中,但json数据集似乎存在一些问题。PFB代码:-

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();
?>

您需要在while循环之外初始化/回显JSON数组:

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

您需要在while循环之外初始化/回显JSON数组:

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

我只是更改了你的代码,尝试一下这个代码,希望你能得到预期的结果

<?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();
?>

我刚刚更改了您的代码,请试用此代码,希望您能如期发布

<?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();
?>
如果要获取循环中生成的所有数据,可能需要将所有数据存储在一个变量中,并对输出进行差异
echo$which直到脚本结束并超出循环。这样你就可以一次把所有的数据都带走。。。下面您的代码稍加修改和注释就可以更好地说明这一点
如果要获取循环中生成的所有数据,可能需要将所有数据存储在一个变量中,并对输出进行差异
echo$which直到脚本结束并超出循环。这样你就可以一次把所有的数据都带走。。。下面您的代码稍加修改和注释就可以更好地说明这一点

不要在循环中使用json\u编码。相反,将数组存储在某个临时数组$resultArray[]=array(…)中。循环之后,执行echo json_encode($resultArray)只需初始化$json1=array();外部循环不要在循环中使用json_编码。相反,将数组存储在某个临时数组$resultArray[]=array(…)中。循环之后,执行echo json_encode($resultArray)只需初始化$json1=array();外环