Julian20151006
Julian20151006

Reputation: 321

Why does the keys of PDO query() result contain tablename?

I connected mysql with PDO like this:

        $servername = 'localhost';
        $servername = 'localhost';
        $dbname = 'atlas';
        $table = 'homepage_pv';
        $username = 'root';
        $password = 'mysql';
        $conn = null;
        try {
            $conn = new PDO(
                "mysql:host=$servername;dbname=$dbname",
                $username,
                $password,
                array(
                    PDO::ATTR_PERSISTENT => true,
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                )
            );
        }
        catch(PDOException $e) {
            echo "connect to mysql failed : " . $e->getMessage();
            $conn = null;
            exit;
        }

        $result = $conn->query('SELECT * from homepage_pv')->fetchAll(PDO::FETCH_NAMED);
        echo "result=" . json_encode($result);

the result is :

result=[{"homepage_pv.id":"1","homepage_pv.datetime":"2019-08-19 22:56:26"},{"homepage_pv.id":"2","homepage_pv.datetime":"2019-08-19 22:56:28"},{"homepage_pv.id":"3","homepage_pv.datetime":"2019-08-19 23:01:58"}]

The keys contain the table name "homepage_pv" , which is not expected;
But where I create PDO like this :

        try {
            $conn = new PDO(
                "mysql:host=$servername;",
               ...
            );
        }
        ...
        $result = $conn->query('SELECT * from atlas.homepage_pv')->fetchAll(PDO::FETCH_NAMED);
        echo "result=" . json_encode($result);

the keys in the result do not contain tablename any more, like this:

result=[{"id":"1","datetime":"2019-08-19 22:56:26"},{"id":"2","datetime":"2019-08-19 22:56:28"},{"id":"3","datetime":"2019-08-19 23:01:58"},{"id":"4","datetime":"2019-08-19 23:08:48"}]

In case1 , I specified dbname when creating PDO and leaved out it when doing query;
In case2 , it's is on the contrary;

So what cause it? how can I specify dbname when creating PDO without the keys in result containing tablename?

Upvotes: 0

Views: 60

Answers (1)

Sravanth Pujari
Sravanth Pujari

Reputation: 54

Use PDO::FETCH_ASSOC in fetchAll(). If you use PDO::FETCH_NAMED it will return with alias name. If alias not present then with the table name. Attaching the doc for your further reference.

Upvotes: 1

Related Questions