Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zakodowaniem tablicy
Forum PHP.pl > Forum > PHP
zbysiusp
Witam!

Pobieram dane z bazy MySQL i koduję je w formacie JSON. Mam jednak problem z uzyskaniem potrzebnej postaci tablicy i proszę o podpowiedź:

Format aktualny:
[{"czas_datetime":"2017-03-16 05:35:00","tempodcz":"-1.2"}]

Format oczekiwany:
["2017-03-16 05:35:00","-1.2"]

Kod:
  1. <?php
  2. require_once 'database.php';
  3.  
  4. $wynik = $conn->prepare("SELECT czas_datetime FROM tab_czujniki_2 ORDER BY czas_datetime DESC LIMIT 1") or die('Błąd zapytania');
  5. $wynik->execute();
  6.  
  7. $results = $wynik->fetchAll(PDO::FETCH_ASSOC);
  8.  
  9. $daten = new DateTime($data);
  10. $daten->modify('-1 day');
  11.  
  12. $minus_data = $daten->format("Y-m-d H:i:00");
  13.  
  14. $stmt = $conn->prepare("SELECT czas_datetime, tempodcz FROM tab_czujniki_2 WHERE czas_datetime >='$minus_data' ORDER BY tempodcz ASC LIMIT 1") or die('Błąd zapytania');
  15.  
  16. $stmt->execute();
  17. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  18. echo json_encode($results);
  19. ?>


Pozdrawiam
gitbejbe
przecież Ty nawet nie spróbowałeś obrobić danych z bazy


  1. //na samym końcu
  2. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  3. $output = array();
  4.  
  5. foreach ($results as $row) {
  6. $output[] = array($row['czas_datetime'], $row['tempodcz']);
  7. }
  8.  
  9. echo json_encode($output);


EDIT:

nie zauważyłem że spodziewasz się tylko 1 wyniku, w takim razie na samym końcu zamiast echo to:

  1. echo json_encode(array($results[0]['czas_datetime'], $results[0]['tempodcz']));


jeśli z bazy chcesz pobrać tylko jeden rekord to zamiast fetchAll użyć samego fetch:

  1. $results = $stmt->fetch(PDO::FETCH_ASSOC);
  2.  
  3. echo json_encode(array($results['czas_datetime'], $results['tempodcz']));


pokombinuj, być może walnąłem gdzieś gafę, dawno już nie pisałem w php
zbysiusp
@gitbejbe

Bardzo dziękuję za szybką i konkretną pomoc. Działa jak należy. Klikam bardzo pomógł.
Pozdrawiam
Pyton_000
a może prościej zamiast:
  1. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  2. echo json_encode($results);



  1. $results = $stmt->fetch(PDO::FETCH_NUM);
  2. echo json_encode($results);


zbysiusp
@Pyton_000

Dziękuję.
$results = $stmt->fetch(PDO::FETCH_ASSOC) działa poprawnie: ["2017-03-17 05:52:00","0.1"]
$results = $stmt->fetch(PDO::FETCH_NUM) działa źle: [null, null]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.