cyclone200
cyclone200

Reputation: 387

Fetch PDO results as associative array using two table columns

I'm trying to store data in an array from a database.

After printing the array, I need something like this :

Array ( [ABBA] => ?search=ABBA [ACDC] => ?search=ACDC [Ace of Spades] => ?search=AceOfSpades)

But currently, I have this :

Array ( [url] => ?search=ABBA [title] => ABBA ) Array ( [idtitle] => ?search=ACDC [title] => ACDC  ) Array ( [idtitle] => ?search=AceOfSpades [title] => Ace of Spades ) 

Here is my code to get the data and store into the array :

$key = $_POST['latestQuery'];

$requete = $bdd->prepare('SELECT url, title FROM articles WHERE title LIKE :key LIMIT 10');
$requete->execute(array('key' => '%'.$key.'%'));

$result_array[] = array();

foreach($requete->fetchAll(PDO::FETCH_ASSOC) as $search)
{
  print_r($result_array[$search['title']] = $search);
}

And here this my table structure :

url | title

$search=ACDC | ACDC

Do you think there is a way to formate my array?

Upvotes: 1

Views: 67

Answers (2)

devpro
devpro

Reputation: 16117

You can try this:

// testing array
$yourArray = array(
    array(
        'url'=>'?search=ABBA',
        'title'=>'ABBA',
        ),
    array(
        'url'=>'?search=BABA',
        'title'=>'BABA',
        ),
    array(
        'url'=>'?search=CBAA',
        'title'=>'CBAA',
        ),
    );

// solution
$myArr = array();
foreach ($yourArray as $key => $value) {
    $myArr[$value['title']] = $value['url'];
}

echo "<pre>";
print_r($myArr);

Result is:

Array
(
    [ABBA] => ?search=ABBA
    [BABA] => ?search=BABA
    [CBAA] => ?search=CBAA
)

Upvotes: 1

u_mulder
u_mulder

Reputation: 54841

Remove print_r from a foreach:

$result_array = array();
foreach($requete->fetchAll(PDO::FETCH_ASSOC) as $search)
{
    $result_array[$search['title']] = $search['url'];
}
print_r($result_array);

Upvotes: 1

Related Questions