Установка массива из MySQL, затем установка каждого значения в качестве переменной PHP - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь установить 12 переменных в зависимости от данных, извлеченных из моей базы данных.На данный момент я установил их в массив, а затем в переменную оттуда.Тем не менее, по какой-то причине 12-е значение из моей базы данных не вводится в мой массив, а затем, когда я пытаюсь получить эхо каждой переменной, я получаю пропущенные даты.Кто-нибудь может увидеть, где я иду не так?

Пример DB

date1 = 01/01/2018

date2 = 02/01/2018

date3 = 03/01/2018

date4 = 04/01/2018

date5 = 05/01/2018

date6 = 01/01/2018

date7 = 07/01/2018

date8 = 08/01/2018

date9 = 09/01/2018

date10 = 10/01/ 2018

date11 = 11/01/2018

date12 = 12/01/2018

Пример массива

Array
(
    [0] =>; 01/01/2018
    [1] =>; 02/01/2018
    [2] =>; 03/01/2018
    [3] =>; 04/01/2018
    [4] =>; 05/01/2018
    [5] =>; 06/01/2018
    [6] =>; 07/01/2018
    [8] =>; 08/01/2018
    [9] =>; 09/01/2018
    [9] =>; 10/01/2018
    [10] =>; 11/01/2018
    [11] =>; 12/01/2018  //-----This isn't being added-----
)

Пример Echo

$ var1 = 01/01/2018 // ----- Должно быть 01/01/2018 -----

$ var2 = 02/01/2018// ----- должно быть 02/01/2018 -----

$ var3 = 01/01/2018 // ----- должно быть 03/01/2018 ----

$ var4 = 02/01/2018 // ----- Должно быть 04/01/2018 -----

$ var5 = 03/01/2018 // ----- Должно быть 05/01/2018 -----

$ var6 = 01/01/2018 // ----- Должно быть 06/01/2018 -----

$ var7 = 02/01/2018 // ----- Должно быть 07/01/2018 -----

$ var8 = 03/01/2018// ----- должно быть 08/01/2018 -----

$ var9 = 04/01/2018 // ----- должно быть 09/01/2018 ----

$ var10 = 01/01/2018 // ----- должно быть 10/01/2018 -----

$ var11 = 02/01/2018 // ----- Должно быть 11/01/2018 -----

$ var12 = 03/01/2018 // ----- Должно быть 12/01/2018 -----

<?php
    include 'db.php';

    if (isset($_GET['id'])) {

        $id = $_GET['id'];

        $sql = "SELECT * FROM system WHERE `id` = '$id' AND `status` = 'Not Set'";
        $result = $conn->query($sql);
        $row = $result->fetch_assoc();

        if ($result->num_rows > 0) {

            $arrayResults = array();
            $i = 0;

            while($row = $result->fetch_assoc()) {

                array_push($arrayResults, $row['date']);

                foreach($arrayResults as $value){

                    ${'var'.$i} = $value;
                    $i++;

                }

            }
            print_r($arrayResults);

            echo '<br><br>';

            echo $var1.'<br>';

            echo $var2.'<br>';

            echo $var3.'<br>';

            echo $var4.'<br>';

            echo $var5.'<br>';

            echo $var6.'<br>';

            echo $var7.'<br>';

            echo $var8.'<br>';

            echo $var9.'<br>';

            echo $var10.'<br>';

            echo $var11.'<br>';

            echo $var12.'<br>';

        }
    }
?>

ОБНОВЛЕНИЕ

Даты эхо-сигналов теперь отражаются только в правильном порядке: теперь все еще отсутствует первая запись в базе данных, поэтомуон создает только 11 переменных, а не 12. Данные массива печатают все даты, кроме первой, поэтому записи в массиве находятся в диапазоне от [0] до [10], когда требуется от [0] до [11].

<?php
    include 'db.php';

    if (isset($_GET['id'])) {

        $id = $_GET['id'];

        $sql = "SELECT * FROM system WHERE `id` = '$id' AND `status` = 'No Set'";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {

            $row = $result->fetch_assoc();

            $arrayResults = array();
            $i = 0;

            while($row = $result->fetch_assoc()) {

                array_push($arrayResults, $row['date']);
                ${'var'.$i} = $row['date'];
                $i++;

            }
            print_r($arrayResults);

            echo '<br><br>';

            echo $var0.'<br>';

            echo $var1.'<br>';

            echo $var2.'<br>';

            echo $var3.'<br>';

            echo $var4.'<br>';

            echo $var5.'<br>';

            echo $var6.'<br>';

            echo $var7.'<br>';

            echo $var8.'<br>';

            echo $var9.'<br>';

            echo $var10.'<br>';

            echo $var11.'<br>';


        }
    }
?>

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы должны поместить "foreach" вне "while"

       while($row = $result->fetch_assoc()) {

            array_push($arrayResults, $row['date']);

       }

       foreach($arrayResults as $value){

                ${'var'.$i} = $value;
                $i++;

       }

Пожалуйста, обратите внимание, что этот цикл make дважды обрабатывает результаты.Вы можете создать экземпляр "$ varx" непосредственно внутри while.И если у вас нет другого использования для $ arrayResults, вы можете пропустить его.

while($row = $result->fetch_assoc()) {

        array_push($arrayResults, $row['date']);//this line is not compulsory. Depends if you need $arrayResults later.
        ${'var'.$i} = $row['date'];
        $i++;
}
0 голосов
/ 04 июня 2018

Вы получаете эхо с $var1, но ваш цикл начинается с $i = 0;

Попробуйте установить $i = 1 или начать эхо $var0 и закончить на $var11

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...