2014-12-09 2 views
1

вызов метода загрузки пользовательского состояния из БД.Выбор нескольких записей и их передача по

public function loadStatus($id) 
{ 
    $stmt = $this -> db -> query("SELECT * FROM messages WHERE user = '$id' "); 

    if($stmt -> num_rows > 0) 
    { 

Здесь Im также возвращает результат как массив (это также работает, но я получаю только последнюю запись). Im рода застрял, я просто не смог получить Foreach или В то время как петля здесь

return $stmt -> fetch_array(); 


    }else{ 
     return false; 
    } 
} 
+0

ваш код уязвим для SQL инъекций –

+0

которые MVC вы используете ... CI? – Riad

+0

Если это оболочка вокруг ['mysqli_fetch_array'] (http://php.net/manual/en/mysqli-result.fetch-array.php), да, это возвращает только одну строку. Вы можете пойти на ['mysqli_fetch_all'] (http://php.net/manual/en/mysqli-result.fetch-all.php). Если это не обертка, обратитесь к дополнительной информации о используемом интерфейсе базы данных. – Wrikken

ответ

0

Итак, наконец, я нашел решение:

public function loadStatus($id) 
{ 
$stmt = $this -> db -> query("SELECT * FROM messages WHERE user = '$id' "); 

if($stmt -> num_rows > 0) 
{ 

$a = array(); 
while($row = $stmt -> fetch_assoc)){ 
    array_push($a, $row); 
} 
return $a; 
0

вам нужно поставить так:

return $stmt->result(); 

, как fetch_array() возвратит одну сгружен строку.

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