php – Excluding numbered-index elements of PDO::fetchAll()-ThrowExceptions

Exception or error:

$allrows = $pdo->fetchAll(); // select * from ....

I want to transform this $allrows into JSON by doing :

echo (json_encode($allrowl,JSON_PRETTY_PRINT));

My problem is that this fetchAll will not only extracting data as associate array but also indexed array for each element, hence repeating elements.

[
    {
        "org_id": "1",
        "0": "1",
        "category": "A",
        "1": "A",

    },
    {
        "org_id": "2",
        "0": "2",
        "category": "A",
        "1": "A",

    }
]

Thank you.

How to solve:

That’s becuase the default fetch mode is FETCH_BOTH. CHange your mode to FETCH_ASSOC and you’ll only get the non-numeric keys.

Assuming $pdo is a PDOStatement, set it like this prior to the fetch.

   $pdo->setFetchMode(PDO::FETCH_ASSOC);

You can also set it in the fetch statement:

   $pdo->fetchAll(PDO::FETCH_ASSOC);

Answer´╝Ü

Use PDO::FETCH_ASSOC to get only the associated arrays:

$allrows = $pdo->fetchAll(PDO::FETCH_ASSOC);

Leave a Reply

Your email address will not be published. Required fields are marked *