PDO associative arrays - return associative PDO associative arrays - return associative php php

PDO associative arrays - return associative


Everybody forgot about the

$sth->fetchAll(PDO::FETCH_KEY_PAIR);


Not really sure if there's any better way. You could try this?

$rows = $statement->fetchAll(PDO::FETCH_ASSOC);$languages = array();function getLangs($col, $row) {     $languages[$col['id']] = $col['name'];}array_walk($rows, 'getLangs');

There's nothing wrong with foreach loops. I'd actually use what you've got. It's hard to get cleaner than that...

UPDATE:

After carefully re-reading your question, what you REALLY should be asking is whether you can format your QUERY in such a way that the results are returned in a different format.

The way that your normal SELECT query is returned is thusly:

+----+----------+| id |     name |+----+----------+|  1 |  svenska ||  2 | engelska || .. |      ... || .. |      ... |+----+----------+$row = array(    row_1 => array(        id   => "1",        name => "svenska"    ),    row_2 => array(        id   => "2",        name => "engelska"    ),    row_3 => array(        id   => "...",        name => "..."    ),    row_4 => array(        id   => "...",        name => "..."    ))$row[$row_number][$column_name] = $value

What you're asking for is for some way to return your query results like THIS:

// Query result is only one row, with each 'id' as column name// And the 'name' from the same row as it's value...+---------+----------+-----+-----+-----+|       1 |        2 | ... | ... | ... |+---------+----------+-----+-----+-----+| svenska | engelska | ... | ... | ... |+---------+----------+-----+-----+-----+$row = array(    row_1 => array(          1 => "svenska",          2 => "engelska",        ... => "...",        ... => "...",        ... => "..."    ))$languages = $row[row_1];$languages[$id] = $name;

I'm not entirely sure you CAN do this in SQL, to be perfectly honest. I would also recommend against it, even if you could. It would be horrendous for a scaling table. If your table is static, then why not format it in the way I just mentioned to begin with? Why not just have it in a static PHP array in an include file?


I think you might be looking for $result = $sth->fetch(PDO::FETCH_ASSOC);

Reference: http://php.net/manual/en/pdostatement.fetch.php

[edit] oops to late :)