PHP PDOstatement fetchAll - převod na Json data

ZAJDAN

  • *****
  • 2 110
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
$result = $prepared->fetchAll(\PDO::FETCH_ASSOC);
prázdné určitě není (ověřeno)
a na převod do json jsem zkusil dva zápisy:
$result = $prepared->fetchAll(\PDO::FETCH_ASSOC);
$json = json_encode($result);
print_r($json);

vrací []

$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 110
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:

//$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 110
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í:
<?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 110
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.