2014-01-10 3 views
1

Метод:Массив возвращает 1 меньше строки - PHP

public function get_connections($member_id) { 
      global $db; 

      $sql = "SELECT `connection_id` FROM `my_connections` WHERE 
        `member_id` = '".$member_id."'"; 

      $result = @mysql_query($sql,$db); check_sql(mysql_error(), $sql, 0);  

      $list = mysql_fetch_array($result); 
      while($list = mysql_fetch_array($result)) { 

       $connection_list[] = $list['connection_id']; 

      } 


      return $connection_list;    
     } 

Где назвать это: (Примечание: вышеприведенный метод из my_connections класса)

$mc = new my_connections; 
$list = $mc->get_connections('206'); 
print_r($list); 

print_r отображает 1 меньше строки чем в БД, в частности, первая строка опускается.

+0

@MattClark Да - если член имеет только 1 соединение, он ничего не возвращает, поэтому я уверен, что он опустил первую запись. –

+0

Рассмотрим переключение на mysqli, поскольку mysql устарел. – frosty11x

ответ

13
$list = mysql_fetch_array($result); // <--- 
while($list = mysql_fetch_array($result)) { 

Удалите первую линию там. Вы выбираете строку и ничего не делаете с ней.

+0

работал - спасибо. я не могу принять ответ за 11 минут :) –

+1

Nice Catch Jess – Rottingham

+1

Thanks @Rottingham – Jessica

3

Кроме того, цикл while не нужен. Вы можете просто ввести

global $db; 
$sql = "SELECT `connection_id` FROM `my_connections` WHERE 
       `member_id` = '".$member_id."'"; 

$result = @mysql_query($sql,$db); check_sql(mysql_error(), $sql, 0); 

return $result->fetch_all(MYSQLI_ASSOC); 

Вы будете уверены, что он содержит только connection_id «S, как и все, что вы запрашиваете БД для

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