2015-11-15 4 views
0

Я пытаюсь вернуть массив, вызванный из публичной функции, хранящейся в файле PHP. Возвращенный массив, который мне нужно экспортировать, находится в формате JSON. У меня есть приведенный ниже код для вызова массива (который в других случаях работает), но выход - это просто Array (sql в phpMyAdmin возвращает все данные)Как вернуть массив из MySQL в PHP

Это общедоступная функция, которая должна возвращать массив, хранящийся в общий файл класса PHP.

public function getIssueList() { 
    $sql = "select * from IssueData"; 
    $returnValue = array(); 

    $result = $this->conn->query($sql); // makes the connection and executes the sql 

    if ($result != null) { 
     $row = $result->fetch_array(MYSQLI_ASSOC); 
     if (!empty($row)) { 
      $returnValue = $row; 
     } 
    } 

    return $returnValue; 

} 

Тогда я называю публичную функцию снизу код:

$result = $dao->getIssueList(); //opens the connection and calls the public function 

echo $result; 

Но эхо результат я получаю только слово «Array»

Приведенный выше код работает для других общественных функций, но он возвращает только одну строку, а не несколько, как мне нужно в этом случае. Также мне нужно, чтобы массив был ассоциативным.

Что может быть неправильным?

+0

изменения '$ ReturnValue = $ строки;' в '$ ReturnValue [] = $ строки; и' Эхо $ результат; 'to' print_r ($ result); '. –

+0

(1) ['-> fecth_array()'] (http://php.net/manual/en/mysqli-result.fetch-array.php) -> Fetch ** a ** строка результатов ..., поэтому, если вам нужны многострочные строки, вам нужно сделать цикл и добавить каждую строку в массив. (2), так как 'return $ returnValue;' будет возвращать массив, вы не можете просто «echo $ result;». Вы можете использовать 'print_r ($ result);' или 'var_dump ($ result)' или ... – Sean

ответ

0

нормально в основном проблема, что я использовал эхо вместо print_r.

изменился также ниже код:

if ($result != null) { 
    $row = $result->fetch_array(MYSQLI_ASSOC); 
    if (!empty($row)) { 
     $returnValue = $row; 
    } 
} 

к:

if ($result != null) { 
     while ($returnValue[] = $result->fetch_array(MYSQLI_ASSOC)); 
} 
0

Вам придется вернуть $ результат как json_encode ($ результат), а также, чтобы правильно заполнить ваш массив, вы должны сделать $ ReturnValue [] = $ строки;

(Вы можете сделать то время цикла, чтобы заполнить массив)

0

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

if ($result != null) { 
$row = $result->fetch_array(MYSQLI_ASSOC); 
    while(!empy($row)){ 
     $returnValue = array_merge($returnValue, $row); 
     $row = $result->fetch_array(MYSQLI_ASSOC); 
    } 
return $returnValue; 
} 
+0

почему бы не просто 'while ($ row = $ result-> fetch_array (MYSQLI_ASSOC)) {$ returnValue = array_merge ($ returnValue, $ row);} '** вместо **' $ row = $ result-> fetch_array (MYSQLI_ASSOC); while (! empy ($ row)) {$ returnValue = array_merge ($ returnValue, $ row); $ row = $ result-> fetch_array (MYSQLI_ASSOC); } ', так как это много избыточного кода. – Sean

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