简体   繁体   English

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

[英]Setting an Array From MySQL then Setting Each Value As a Variable PHP

I'm trying to get 12 variables set depending on the data pulled from my database. 我试图根据从数据库中提取的数据来设置12个变量。 At the moment I have it setting them into an array and then into a variable from there. 目前,我将它们设置为数组,然后从那里设置为变量。 However, for some reason the 12th value from my db isn't being entered into my array and then when I attempt an echo of each variable I get miss matched dates. 但是,由于某种原因,数据库中的第12个值没有输入到数组中,因此当我尝试对每个变量进行回显时,都会错过匹配的日期。 Can anyone see where I'm going wrong here? 谁能看到我在哪里出问题了?

Example DB 示例数据库

date1 = 01/01/2018 日期1 = 01/01/2018

date2 = 02/01/2018 日期2 = 02/01/2018

date3 = 03/01/2018 日期3 = 03/01/2018

date4 = 04/01/2018 日期4 = 04/01/2018

date5 = 05/01/2018 日期5 = 05/01/2018

date6 = 06/01/2018 date6 = 06/01/2018

date7 = 07/01/2018 date7 = 07/01/2018

date8 = 08/01/2018 date8 = 08/01/2018

date9 = 09/01/2018 date9 = 09/01/2018

date10 = 10/01/2018 date10 = 10/01/2018

date11 = 11/01/2018 date11 = 11/01/2018

date12 = 12/01/2018 date12 = 12/01/2018

Example Array 示例数组

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-----
)

Example Echo 回声示例

$var1 = 01/01/2018 //-----Should be 01/01/2018----- $ var1 = 01/01/2018 //-应该是01/01/2018 -----

$var2 = 02/01/2018 //-----Should be 02/01/2018----- $ var2 = 02/01/2018 //-应该是02/01/2018 -----

$var3 = 01/01/2018 //-----Should be 03/01/2018----- $ var3 = 01/01/2018 //-应该是03/01/2018 -----

$var4 = 02/01/2018 //-----Should be 04/01/2018----- $ var4 = 02/01/2018 //-应该是04/01/2018 -----

$var5 = 03/01/2018 //-----Should be 05/01/2018----- $ var5 = 03/01/2018 //-应该是05/01/2018 -----

$var6 = 01/01/2018 //-----Should be 06/01/2018----- $ var6 = 01/01/2018 //-应该是06/01/2018 -----

$var7 = 02/01/2018 //-----Should be 07/01/2018----- $ var7 = 02/01/2018 //-应该是07/01/2018 -----

$var8 = 03/01/2018 //-----Should be 08/01/2018----- $ var8 = 03/01/2018 //-应该是08/01/2018 -----

$var9 = 04/01/2018 //-----Should be 09/01/2018----- $ var9 = 04/01/2018 //-应该是09/01/2018 -----

$var10 = 01/01/2018 //-----Should be 10/01/2018----- $ var10 = 01/01/2018 //-应该是10/01/2018 -----

$var11 = 02/01/2018 //-----Should be 11/01/2018----- $ var11 = 02/01/2018 //-应该是11/01/2018 -----

$var12 = 03/01/2018 //-----Should be 12/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>';

        }
    }
?>

UPDATE 更新

The echo dates are now echoing in the correct order only issue now is it's still missing the first entry from the database so it's only creating 11 variables not 12. The array data prints all dates but the first, so the array entries are from [0] to [10] when it needs to be [0] to [11]. 现在,回显日期按正确的顺序回显,只是现在仍然存在,因为它仍然缺少数据库中的第一个条目,因此它只创建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>';


        }
    }
?>

You echo from $var1 , but your loop starts from $i = 0 ; 您从$var1 ,但是循环从$i = 0

Try setting $i = 1 , or start echoing $var0 and ending on $var11 尝试设置$i = 1 ,或开始回显$var0并以$var11

You should put the "foreach" outside of the "while" 您应该将“ foreach”放在“ while”之外

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

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

       }

       foreach($arrayResults as $value){

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

       }

Please note that this make loop twice over the results. 请注意,此make循环两次遍历结果。 You could instantiate the "$varx" directly inside the while. 您可以在while内部直接实例化“ $ varx”。 And if you have no other use for $arrayResults you can skip it. 如果$ 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++;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM