Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JSON][PHP][MySQL] Przesył danych z JSON przez PHP do SQL
.Wojtek
post 7.08.2018, 17:52:54
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


Cześć,
chciałbym porposić o pomoc w przesyle danych z JSON do SQL. Plik data.json z bazą JSON, wygląda następująco:

Kod
{
    "Data 1": {
        "Text1": "Anything1",
        "Text2": "Anything2",
        "Text3": "Anything3",
        "Text4": "Anything4"
    },
    "Data 2": {
        "DATE 1": {
            "1.": "145",
            "2.": "258",
            "3.": "542"
        },
        "DATE 2": {
            "1.": "428",
            "2.": "528",
            "3.": "755"
        },
        "DATE 3": {
            "1.": "727",
            "2.": "514",
            "3.": "425"
        }
    }
}


Chciałbym powyższe dane przesłać do bazy danych SQL w następujących kolumnach tabeli:
Kod
DATE
1.
2.
3.
Gdzie "DATE" to kolejna data z numerami 1, 2, 3.

Na razie mam taki kod i nie wiem co dalej:
  1. <?php
  2. $db = new PDO('mysql:host=localhost;dbname=test','root','');
  3. $jsonData = file_get_contents('data.json');
  4. $data = json_decode($jsonData, true);
  5.  
  6. $stmt = $db->prepare("insert into test2 values(?,?,?,?)");
  7.  
  8. foreach ($data as $row) {
  9. //$stmt->bindParam(1,$row ? );
  10. $stmt->execute();
  11. }
  12. ?>


Ten post edytował .Wojtek 7.08.2018, 17:54:57
Go to the top of the page
+Quote Post
leonpro778
post 8.08.2018, 08:07:08
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


Zrób sobie var_dump($data) i zobacz jaką tablicę Tobie zwraca. Rozumiem, że chcesz uzyskać tabelę mniej więcej podobną do tego?

DATE (int) | 1 (int) | 2 (int) | 3 (int)
1 | 145 | 258 | 542
2 | 428 | 528 | 755
itd.

Go to the top of the page
+Quote Post
.Wojtek
post 9.08.2018, 18:46:09
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


@leonpro778 prawie:

DATE (varchar) | 1 (int) | 2 (int) | 3 (int)
Date 1 | 145 | 258 | 542
Date 2 | 428 | 528 | 755

Problem rozwiązany:
  1. <?php
  2. $json = file_get_contents('data.json');
  3.  
  4. $jsonDecoded = json_decode($json, true);
  5. foreach ($jsonDecoded['Data 2'] as $dateKey => $data) {
  6. $values = implode(',', $data);
  7. $statement = "INSERT INTO test2 (Date, 1, 2, 3) VALUES ('{$dateKey}'," . $values . ");";
  8. echo $statement . PHP_EOL;
  9. }
  10. ?>


Ten post edytował .Wojtek 9.08.2018, 18:49:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 09:02