从MySQL设置数组然后将每个值设置为变量PHP

时间:2018-06-04 14:55:02

标签: php mysqli

我正在尝试根据从数据库中提取的数据设置12个变量。目前我将它们设置为一个数组,然后从那里变成一个变量。但是,出于某种原因,我的db中的第12个值没有被输入到我的数组中,然后当我尝试每个变量的回声时,我得到了错过匹配的日期。谁能看到我在哪里错了?

示例DB

  

date1 = 01/01/2018

     

date2 = 02/01/2018

     

date3 = 03/01/2018

     

date4 = 04/01/2018

     

date5 = 05/01/2018

     

date6 = 06/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]到[11]时,从[0]到[10]。

<?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 :(得分:0)

您从$var1回复,但您的循环从$i = 0;

开始

尝试设置$i = 1,或开始回复$var0并以$var11结束

答案 1 :(得分:0)

你应该把#&#34; foreach&#34; &#34;而#34;

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

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

       }

       foreach($arrayResults as $value){

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

       }

请注意,此make循环两次结果。你可以实例化&#34; $ varx&#34;直接在里面。如果你对$ 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++;
}