Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ZAJDAN 19. 11. 2014, 11:36:13

Název: PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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í []
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: lenochware 19. 11. 2014, 11:45:52
Neni to kodovanim? json_encode() prijma AFAIK jen utf8.
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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} ]
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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));