Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]JSON Encode
Forum PHP.pl > Forum > Przedszkole
Delleg
Mam taką tablicę

Kod
Array
(
    [0] => Array
        (
            [czaspomiaru] => 2017-01-31 11:13:07
            [czujnik_1] => 32
            [czujnik_2] => 54
            [czujnik_3] => 66
            [czujnik_4] => 77
            [czujnik_5] => 82
        )

)


Muszę użyć jej w scrypcie Morris.js do generowania wykresów. Wycinek statycznego kodu jako przykład:
Kod
[{czaspomiaru: '2017-01-31 11:13:07', czujnik1: 32, czujnik2: 54, czujnik3: 66, czujnik4: 77, czujnik5: 82}]

Kod
            $statement = $pdo->prepare('SELECT czaspomiaru , czujnik_1 , czujnik_2 , czujnik_3 , czujnik_4 , czujnik_5
                                        FROM pomiary order by pomiary_id desc limit 10');
            $statement->execute();

            $results = $statement->fetchAll(PDO::FETCH_ASSOC);
            $json = json_encode($results);

co daje w efekcie coś takiego:
Kod
[{"czaspomiaru":"2017-01-31 11:13:07","czujnik_1":"32","czujnik_2":"54","czujnik_3":"66","czujnik_4":"77","czujnik_5":"82"}]

jak wymusić odpowiedni zapis z apostrofami tylko tam gdzie są potrzebne?
rad11
Próbowałeś uzyć flagi JSON_NUMERIC_CHECK ? Jeżeli to nie zadziała to musisz przelecieć te dane w pętli w php`ie i parsować je na int. Możesz w sumie też spróbować castować te dane w zapytaniu
Delleg
Cytat(rad11 @ 31.01.2017, 12:30:56 ) *
Próbowałeś uzyć flagi JSON_NUMERIC_CHECK ?


Tak próbowałem, nie działa.

Cytat
Jeżeli to nie zadziała to musisz przelecieć te dane w pętli w php`ie i parsować je na int. Możesz w sumie też spróbować castować te dane w zapytaniu

Tyko po co CAST skoro kolumny są INT(11)

  1. CREATE TABLE IF NOT EXISTS `pomiary` (
  2. `pomiary_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `czaspomiaru` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  4. `czujnik_1` int(11) NOT NULL,
  5. `czujnik_2` int(11) NOT NULL,
  6. `czujnik_3` int(11) NOT NULL,
  7. `czujnik_4` int(11) NOT NULL,
  8. `czujnik_5` int(11) NOT NULL,
  9. PRIMARY KEY (`pomiary_id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=12 ;
viking
PDO zwraca stringi http://stackoverflow.com/questions/1197005...mysql-using-pdo
Delleg
Cytat(viking @ 31.01.2017, 14:29:51 ) *


Dzięki za podpowiedź, trzeba było dodać - PDO::ATTR_EMULATE_PREPARES w połączeniu z bazą.
  1. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES);
viking
I chcesz powiedzieć że ten kod ci działa?
Bo setAttribute ma składnię: public bool PDO::setAttribute ( int $attribute , mixed $value )
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.