我正在尝试根据从数据库中提取的数据设置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>';
}
}
?>
答案 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++;
}