开发者

json_encode returning null with Postgres database and php

开发者 https://www.devze.com 2023-03-23 09:03 出处:网络
I am referring to this question here on stackoverflow, and I have the same problem, except that I use postgre database and can\'t seem to get this working.

I am referring to this question here on stackoverflow, and I have the same problem, except that I use postgre database and can't seem to get this working.

Th开发者_开发知识库is is my php function which is querying the database:

public function getCashData($id, $date)
{
    if ($this->openConnection()){
        $query = "SELECT * FROM cash_register (". $id .", '". $date ."');";

        $result = pg_query($query);
        if (!$result){
                return false;
        }

        return pg_fetch_all($result);
    }
}

I call this function like this:

$cashReport = getCashReport($id, $date);

$cashReport = array_map('utf8_encode' , $casaReport); //**note: please read below
echo json_encode($casaReport);

**This was working perfectly when I was returning only one row of result (and not all like now), but now when I'm returning an array of rows this array_map function (which I found in the above mentioned link) is not working as it expects an array and not an array of arrays.

Can you guys help me solve this problem?


Try this:

function encode_items(&$item, $key)
{
    $item = utf8_encode($item);
}

array_walk_recursive($cashReport, 'encode_items');


It's also possible to "tell" the postgre server to send the data utf-8 encoded.
see http://docs.php.net/pg_set_client_encoding


I did this in the end as I was forced to "fix" it asap:

$json = json_encode($cashReport);
$jsonEscapedNulls = str_replace('null', '""', $json);
echo $jsonEscapedNulls;

Now, I understand that "fixes" aren't solutions but I had no other choice in a give period of time :(. So if someone gives an answer which will work not as a fix but as a general solution I will be grateful. Until then, this will have to do.

0

精彩评论

暂无评论...
验证码 换一张
取 消