2013-06-25 5 views
-2

У меня есть небольшая проблема с моей связанной с mysqli функцией. Вот код:функция возвращает только первое значение массива с результатом запроса mysqli

$query = "SELECT * FROM uploads"; 
if ($result = $mysqli->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
    return $row; 
    } 

Проблема заключается в том, что, когда я использую эту функцию $row, как представляется, является массивом, но только первое значение из результата запроса в нем. Но если я попытаюсь использовать return var_dump($row), функция отобразит массив, как и ожидалось, со всеми значениями из результата запроса. Не могли бы вы объяснить, почему это происходит и как правильно вернуть массив с полным результатом запроса. Спасибо!

ответ

3
$data = array(); 
$query = "SELECT * FROM uploads"; 
if ($result = $mysqli->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
    $data[] = $row; 
    } 
} 
return $data; 
+0

Что делает ваш ответ лучше? Вы просто возвращаете объект – samayo

+0

И что нужно возвращать вместо этого? Странно, мягко говоря, сериализовать массив сначала только для десериализации его сразу после. – raina77ow

+0

, столкнувшись с необходимостью получить больший объем данных из БД таким образом, кажется лучшим выбором. –

-1

Изменить это:

while ($row = $result->fetch_assoc()) { 
return $row; 
} 

Для:

function test(){ 
$query = "SELECT * FROM uploads"; 
if ($result = $mysqli->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
$data[]=$row; 
    } 
}else{ 
$data=array(); 
} 
return $data; 
} 

тестовой функции Вызов

$bbb=test(); 

foreach($bbb as $key){ 
    $dbTableColumn1 = $key['column1']; 
    $dbTableColumn2 = $key['column2']; 
    $dbTableColumn3 = $key['column3']; 
    //...$variable = $key['ColumnOfYourTable']; 
    $text .= $dbTableColumn1.'|'.$dbTableColumn2.'|'.$dbTableColumn3.'<br/>'; 
    //Whatever you want to output 
} 

Функция предназначена только для сделать более читаемым

+0

Спасибо, мужик! Теперь это работает. –

+0

Кто-то может объяснить, почему голос? –

+0

Функция, подобная этой, не должна возвращать форматированные данные. Вложенный массив должен быть возвращен вместо –

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