Оператор echo выводит только значение года из строки, которая была добавлена ​​последней. Как вывести другие значения? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть таблица позиций в базе данных, с рангом, годом, описанием, ... как столбцы и есть несколько строк ... Я должен вернуть $positions array в другой php файл ... Я попытался echo $positions[0]['rank'];, но получил ошибку "Неопределенное смещение: 0"

    function loadPos($pdo,$profile_id)
{
    $stmt=$pdo->prepare('SELECT * FROM position WHERE profile_id=:prof ORDER BY rank');
    $stmt->execute(array(':prof' => $profile_id ));
    $positions=array();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {

        $positions=$row;



    }
    echo $positions['rank'];

return $positions;
}

1 Ответ

0 голосов
/ 22 апреля 2020

Переместите оператор echo в ваше время l oop.

while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    $positions=$row;
    echo $positions['rank'];
}

Вам не нужно создавать новую переменную сейчас. Вы можете использовать $ row

while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    echo $row['rank'];
}

Похоже, вы не понимаете, что такое оператор while. Я бы начал с изучения основ c управления потоком.

== UPDATE ==

Комментарий ниже утверждает, что $ позиции должны быть массивом, который можно вернуть. Итак: Шаг 1 - сделать $ позиции массивом. Шаг 2 - Поместите каждую строку в массив. Шаг 3 - Вернуть массив. Следующий код не беспокоится о печати строк. Он сосредоточен исключительно на методе создания и возврата массива.

$positions = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    $positions[] = $row;
}
return $positions;

Надеемся, очевидно, что $ позиции создается как пустой массив. Каждый раз, пока l oop, строка добавляется в массив. [] Означает «следующий индекс». Наконец, $ позиции возвращаются.

...