2015-04-23 4 views
0

Мне нужно объединить категории и подкатегории в один массив. Вот код.Как слить данные массива PDO Mysql с помощью Php

$sql = 'select * from category where id = ?'; 
$q = $db->prepare($sql); 
$q->bindParam(1, $id); 
$q->execute(); 
while($rows = $q->fetch()){ 
    $cat[] = $rows['id']; 
    $s = 'select * from category where category_id = ?'; 
    $q = $db->prepare($s); 
    $q->bindParam(1, $rows['id']); 
    $q->execute(); 
    while($row = $q->fetch()){ 
     $list[] = $row['id']; 
    } 

    $data = array_push($cat, $list); 

    echo $data; 

} 

Я получаю 2 значение при печати вместо IdS номера

+1

Вы можете поставить то, что вы получаете и то, что вы ожидаете? –

+0

Здесь лучше вставить структуру таблицы. –

+0

Не используйте 'array_push', он добавляет значения по какой-то причине. Что вы хотите, чтобы один массив со всеми значениями? Пример: '$ array1 [] = 1; $ array2 [] = 1; echo array_push ($ array1, $ array2); ' – chris85

ответ

0

вы хотите объединить $ кота и $ список?

вы можете попробовать:

array_merge($cat, $list); 
+0

Пробужденная ошибка преобразования строки в массив –

0

Я думаю, что вы хотите это:

$sql = 'select * from category where id = ?'; 
$q = $db->prepare($sql); 
$q->bindParam(1, $id); 
$q->execute(); 
$data = array(); 
while($rows = $q->fetch()){ 
    $cat[] = $rows['id']; 
    $s = 'select * from category where category_id = ?'; 
    $q = $db->prepare($s); 
    $q->bindParam(1, $rows['id']); 
    $q->execute(); 
    while($row = $q->fetch()){ 
    $list[] = $row['id']; 
    } 

    $data = array_merge($data, $cat, $list); 
    //$data = array_unique($data); 

    print_r($data); 

} 

Обратите внимание на $data = array(); до цикла. С помощью array_merge вы объединяете категории и подкатегории с массивом $ data в массив данных.

Если вам случится получить нулевое значение, которое вам не нужно или хотите, просто раскомментируйте $data = array_unique($data); и он удалит дублированные записи для вас.

Просьба уточнить ваш вопрос, если я не адресую вашу проблему, и я обновлю свой ответ.

Удачи, может быть источник с вами.

+0

Спасибо за ответ. Я пробовал вашу ошибку решения: Array преобразовывает строку –

+0

из-за 'echo $ data' ($ data - это массив, echo для эхо-строк), должен быть print_r ($ data) или аналогичным. – mondjunge

0

Я решил эту проблему с помощью этого поста combine-results-from-two-pdo-queries

$id = '1'; 
$results = array(); 
$sql = 'select * from category where id = ?'; 
    $q = $db->prepare($sql); 
    $q->bindParam(1, $id); 
    $q->execute(); 
    while($rows = $q->fetch(PDO::FETCH_ASSOC)){ 
     $results[] = $rows['id']; 
    } 
    $s = 'select * from category where category_id = ?'; 
    $q = $db->prepare($s); 
    $q->bindParam(1, $id); 
    $q->execute(); 
    while($row = $q->fetch(PDO::FETCH_ASSOC)){ 
    $results[] = $row['id']; 
    } 

    var_dump($results); 
Смежные вопросы