PHP PDOstatement fetchAll - převod na Json data

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
PHP PDOstatement fetchAll - převod na Json data
« kdy: 19. 11. 2014, 11:36:13 »
pokouším se převést výsledek PHP PDOstatemnetu na json data, ale vrací se mi prázdné pole:
tímto získám pole/slovník
Kód: [Vybrat]
$result = $prepared->fetchAll(\PDO::FETCH_ASSOC);prázdné určitě není (ověřeno)
a na převod do json jsem zkusil dva zápisy:
Kód: [Vybrat]
$result = $prepared->fetchAll(\PDO::FETCH_ASSOC);
$json = json_encode($result);
print_r($json);
vrací []

Kód: [Vybrat]
$json = json_encode($prepared->fetchAll(\PDO::FETCH_ASSOC));
print_r($json);
vrací []
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


lenochware

Re:PHP PDOstatement fetchAll - převod na Json data
« Odpověď #1 kdy: 19. 11. 2014, 11:45:52 »
Neni to kodovanim? json_encode() prijma AFAIK jen utf8.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:PHP PDOstatement fetchAll - převod na Json data
« Odpověď #2 kdy: 19. 11. 2014, 11:55:06 »
omlouvám se vyřešeno, problém spočíval v tom, že jsem zanechal předchozí zápis:

Kód: [Vybrat]
//$result = $prepared->fetchAll(\PDO::FETCH_ASSOC);
$json = json_encode($prepared->fetchAll(\PDO::FETCH_ASSOC));
pokud ho smažu či zakomentuji je klid a převod na json je ok
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:PHP PDOstatement fetchAll - převod na Json data
« Odpověď #3 kdy: 19. 11. 2014, 13:38:48 »
je to ok, když výstup z json_encode je obalen do hranatých závorek? [ ]
na php.net se uvádí:
Kód: [Vybrat]
<?php
$arr 
= array('a' => 1'b' => 2'c' => 3'd' => 4'e' => 5);
echo 
json_encode($arr);
?>
The above example will output:
{"a":1,"b":2,"c":3,"d":4,"e":5}

ovšem můj výstup je obalen do [ {"a":1,"b":2,"c":3,"d":4,"e":5} ]
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:PHP PDOstatement fetchAll - převod na Json data
« Odpověď #4 kdy: 19. 11. 2014, 16:42:37 »
zjistil jsem že, fetchAll() vždy vrací "2D array"  a proto je to obalené do []
pokud tedy potřeba získat jako objekty použije se:
json_encode($result, JSON_FORCE_OBJECT));
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.