Mysqli => Array

zero-web

Новичок
Всем привет!
Есть такой запрос к БД:
SELECT * FROM jos_user_profiles WHERE user_id = '124'
Вот такой ответ:
INSERT INTO `jos_user_profiles` (`user_id`, `profile_key`, `profile_value`, `ordering`) VALUES
(124, 'profile.address1', '', 1),
(124, 'profile.address2', '', 2),
(124, 'profile.city', '', 3),
(124, 'profile.country', '223', 5),
(124, 'profile.dis_email', '[email protected]', 8),
(124, 'profile.dis_name', 'kh', 7),
(124, 'profile.facebook', '', 9),
(124, 'profile.image', '', 15),
(124, 'profile.phone', '', 6),
(124, 'profile.region', '1', 4),
(124, 'profile.shoppingcarturl', '', 14),
(124, 'profile.twitter', '', 10),
(124, 'profile.wappurl', '', 13),
(124, 'profile.website', 'httplawebru', 12),
(124, 'profile.youtube', '', 11);
Данные, помеченные profile.dis_email и profile.dis_name присвоить переменным.
Вот что я написал:
PHP:
<?php
$sql = "SELECT * FROM jos_user_profiles WHERE user_id = '".$uid."'";
$result = mysqli_query($link, $sql);
$row = $result->fetch_assoc();
   if($row){
      $name ='';
      $email = '';
      foreach($row as $info){
        if($info->profile_key == 'profile.dis_name'){
          $name =  $info->profile_value;
        }else if($info->profile_key == 'profile.dis_email'){
          $email =  $info->profile_value;
        }
      }
    }
?>
Но не работает... Потом тестил, решил вывести массив
PHP:
<? print_r($row); ?>
Выводится только первая строка (или добавяется в него только первая строка?).
 

Andkorol

Новичок
Вам нужно $row получать циклически:
PHP:
$sql = "SELECT * FROM jos_user_profiles WHERE user_id = '".$uid."'";
$result = mysqli_query($link, $sql);
$name ='';
$email = '';
while($row = $result->fetch_assoc()){
    if($row['profile_key'] == 'profile.dis_name'){
        $name =  $row['profile_value'];
    }else if($row['profile_key'] == 'profile.dis_email'){
        $email =  $row['profile_value'];
    }
}
PS: оптимальнее сразу получать только нужные вам значения, при помощи дополнительных условий WHERE в запросе.
 
Сверху