Как вставить массивы с одинаковыми значениями в формате json в столбец php mysql

0

У меня есть json-формат, как показано ниже.

{
    "results": [
{
"url": "someurl",
"imageUrl": "somepath",
    "tickets": [
                {
                    "id": 98655,
                    "name": "ADULT TICKET",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 100,
                    "salesStart": "2018-06-26T11:52:00",
                    "salesEnd": "2018-07-28T17:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                },
                {
                    "id": 98656,
                    "name": "UNDER 12",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 80,
                    "salesStart": "2018-06-26T11:53:00",
                    "salesEnd": "2018-07-28T17:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                }
            ]
},
{
"url": "someurl",
"imageUrl": "somepath",
"tickets": [
                {
                    "id": 98735,
                    "name": "ADULT EARLY BIRD",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 150,
                    "salesStart": "2018-06-26T12:47:00",
                    "salesEnd": "2018-08-12T10:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                },
                {
                    "id": 98736,
                    "name": "UNDER 12 - EARLY BIRD",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 120,
                    "salesStart": "2018-06-26T12:47:00",
                    "salesEnd": "2018-08-12T10:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                }
            ]
}
],
"pageSize": 10,
    "pages": 1,
    "records": 2,
    "extras": null,
    "message": null,
    "statusCode": 0
}

У меня есть таблица в моей базе данных как "event_tickets", и у нее есть столбцы имени и цены. Я хочу показать имена ADULT TICKET и UNDER 12 в том же столбце, разделенные запятой, и цены 100 и 80 в том же столбце по цене, разделенные запятая

Я хочу, чтобы он показывал что-то подобное на моем столе. Чтобы сделать его более ясным, я хочу Вставить значение, как указано в таблице выше, используя php. Формат таблицы должен быть таким

name                                      |   price
ADULT TICKET,UNDER 12                     |  100,80
ADULT EARLY BIRD, UNDER 12 - EARLY BIRD   |  150,120

есть ли способ, которым я могу достичь этого, используя php?

потому что, когда я пытаюсь запустить свой код, имена отображаются в разных столбцах и ценах в разных столбцах

заранее спасибо

Теги:
multidimensional-array
associative-array

1 ответ

1

Одно из решений в PHP:

// This is your json data.
$jsonData = '{
    "results": [
{
"url": "someurl",
"imageUrl": "somepath",
    "tickets": [
                {
                    "id": 98655,
                    "name": "ADULT TICKET",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 100,
                    "salesStart": "2018-06-26T11:52:00",
                    "salesEnd": "2018-07-28T17:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                },
                {
                    "id": 98656,
                    "name": "UNDER 12",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 80,
                    "salesStart": "2018-06-26T11:53:00",
                    "salesEnd": "2018-07-28T17:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                }
            ]
},
{
"url": "someurl",
"imageUrl": "somepath",
"tickets": [
                {
                    "id": 98735,
                    "name": "ADULT EARLY BIRD",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 150,
                    "salesStart": "2018-06-26T12:47:00",
                    "salesEnd": "2018-08-12T10:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                },
                {
                    "id": 98736,
                    "name": "UNDER 12 - EARLY BIRD",
                    "soldOut": false,
                    "provisionallySoldOut": false,
                    "price": 120,
                    "salesStart": "2018-06-26T12:47:00",
                    "salesEnd": "2018-08-12T10:00:00",
                    "description": "",
                    "donation": false,
                    "vendorTicket": false
                }
            ]
}
],
"pageSize": 10,
    "pages": 1,
    "records": 2,
    "extras": null,
    "message": null,
    "statusCode": 0
}';

$servername = '';
$username   = '';
$password   = '';
$dbname     = ''; 

// Connect to your database
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$formatedData = json_decode($jsonData);

foreach($formatedData->results as $result) {

    $names  = array();
    $prices = array();

    foreach($result->tickets as $ticket) {
        // Add each price and name to arrays
        $names[]  = $ticket->name;
        $prices[] = $ticket->price;
    }

    // Glue the arrays with comma into strings
    $combinedNames  = implode(',', $names);
    $combinedPrices = implode(',', $prices);

    // Perform your database query
    $sql = "INSERT INTO your_table 
         (name, price) 
       VALUES
         ('$combinedNames', '$combinedPrices')";
    // Remember to watch out for SQL injections
    if ($conn->query($sql) === true) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }


}
$conn->close();   
  • 0
    я немного отредактировал свой вопрос, пожалуйста, вы можете повторить его снова ??
  • 0
    Я отредактировал ответ, чтобы он соответствовал новому формату JSON. Нам нужен еще один цикл foreach для массива результатов.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню