Antony Jack
Antony Jack

Reputation: 480

How to get Table field names at top of result array

Here is my Sample table:

enter image description here

Here is My Query:

SELECT * FROM table

Result for above query is:

Array
    (
        [0] => Array
            (
                [id] => 1
                [name] => a
                [country] => x
            )
        [1] => Array
            (
                [id] => 2
                [name] => b
                [country] => y
            )
    )

I need to get the field names in the first element of the array.

Expected result array is:

Array
(
    [0] => Array
        (
            [id] => id
            [name] => name
            [country] => country
        )
    [1] => Array
        (
            [id] => 1
            [name] => a
            [country] => x
        )
    [2] => Array
        (
            [id] => 2
            [name] => b
            [country] => y
        )
)

How can I modify the Query to get this result?

Thanks in advance...

Upvotes: 0

Views: 67

Answers (3)

A l w a y s S u n n y
A l w a y s S u n n y

Reputation: 38512

One way to do it with array_keys, array_combine and array_unshift. If I were you I will get the SQL result as $array variable and do some processing on php side like below on query side.

<?php
$array = [['id'=>1,'name'=>'a','country'=>'x'],['id'=>1,'name'=>'b','country'=>'y']];
$keys = array_keys($array[0]);
$first = array_combine($keys,$keys);
array_unshift($array,$first);
print_r($array);
?>

WORKING DEMO: https://3v4l.org/IqZVk

Upvotes: 1

Nick
Nick

Reputation: 147206

Display issues should generally be dealt with in application code, not SQL queries. If you have your values in an array (called $results, say), you can use this code to add the desired entry:

array_unshift($results, array_combine(array_keys($results[0]), array_keys($results[0])));
print_r($results);

Output:

Array
(
    [0] => Array
        (
            [id] => id
            [name] => name
            [country] => country
        )
    [1] => Array
        (
            [id] => 1
            [name] => a
            [country] => x
        )
    [2] => Array
        (
            [id] => 2
            [name] => b
            [country] => y
        )
)

Demo on 3v4l.org

Upvotes: 1

Akina
Akina

Reputation: 42704

SELECT 'id' id, 'name' name, 'country' country
UNION ALL
SELECT id, name, country FROM table
ORDER BY 'id' != id

Upvotes: 1

Related Questions