Fórum Root.cz

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

Název: PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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í []
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: lenochware kdy 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 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
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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} ]
Název: Re:PHP PDOstatement fetchAll - převod na Json data
Přispěvatel: ZAJDAN 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));