2016-04-19 2 views
1

Этот запрос к MySQL:выборки (PDO :: FETCH_ASSOC) возвращает все значения запроса MySQL в массив

SELECT `group_id` 
      FROM `j30_user_usergroup_map` 
      WHERE `user_id` =3065 

возвращает следующие результаты:

enter image description here

Однако в PHP следующий код:

$db = new PDO('mysql:host=localhost;dbname=', '', ''); 
    $sth = $db->prepare('SELECT `group_id` 
     FROM `j30_user_usergroup_map` 
     WHERE `user_id` =3065'); 
    $sth->execute(); 
    $result = $sth->fetch(PDO::FETCH_ASSOC);   
    print_r($result); 

возвращается:

([group_id] => 2) 

Я хочу, чтобы все элементы массива, а не только 1, как описано here

+0

Loop или http://php.net/ manual/en/pdostatement.fetchall.php – AbraCadaver

+0

FYI, нет смысла использовать 'PDO', если вы не привязываете свои значения. Воспользуйтесь преимуществами дополнительной безопасности. И вы ищете 'fetchAll()': http://php.net/manual/en/pdostatement.fetchall.php – Marcus

+0

PDOStatement :: fetch - выводит ** следующую строку ** из результирующего набора – AbraCadaver

ответ

1

У вас есть два пути, чтобы решить эту проблему, изменить fetch() по fetchAll() или использовать while и возвращает новый массив.

1) FetchAll Approch

Изменение:

$result = $sth->fetch(PDO::FETCH_ASSOC);  

By:

2) В то время как Approch

$items = array(); 
while($row = $sth->fetch(PDO::FETCH_ASSOC)){ 
    $items[] = $row; 
}  
+0

fetchВсе работает, но в ссылке на предоставленное мной руководство используется выборка. –

+0

Ссылка из руководства описывает «PDOStatement :: fetch - выборки ** следующей строки ** из набора результатов» – AbraCadaver

+1

@NunoNogueira se quiser pode perguntar na versão em português do site http://pt.stackoverflow.com/:) – rray

Смежные вопросы