PHP MYSQL查询帮助,结果不是预期的

时间:2017-06-10 10:20:30

标签: php

嘿,我正在运行php mysqli查询:

<?php do { echo $row['depicao']; ?>-<?php } while ($row = mysqli_fetch_array($query)); ?>

我需要的结果应该显示以下内容

data-data2-data3-data4等。

然而,我所看到的是:

-data-DATA2-DATA3-DATA4

我怎样才能得到&#34; - &#34;不是第一个结果?

我尝过这个但是得到了相同的结果。

<?php do { echo $row['depicao']; echo'-'; ?><?php } while ($row = mysqli_fetch_array($query)); ?>

由于

3 个答案:

答案 0 :(得分:2)

do { echo $row['depicao']; ?>-<?php } 
while ($row = mysqli_fetch_array($query))

$row在第一次迭代后定义为,而之前不是。这就是原因 $row['depicao']不输出任何内容。如果你有error_reporting - 你也会看到通知。

所以,首先要解决的问题是首先定义$row ,然后输出它:

while ($row = mysqli_fetch_array($query)) {
    echo $row['depicao']; 
    echo '-';
}

但在这种情况下,您的输出将以-结束。

因此,其中一个解决方案是收集数组中的值并implode&#39; em:

$values = [];
while ($row = mysqli_fetch_array($query)) {
    $values[] = $row['depicao']; 
}
echo implode('-', $values);

答案 1 :(得分:0)

尝试使用while循环而不是do-while。

<?php while($row = mysqli_fetch_array($query)) { echo $row['depicao'];echo'-';} ?>

do while的问题是即使条件失败也至少执行一次。因此,即使没有评估条件,也会在开头打印一个“ - ”。

如果目标只是删除额外的“ - ”,则可以使用 -

完成
<?php do { echo $row['depicao']; if($row['depicao']!=null) echo "-"; } while ($row = mysqli_fetch_array($query)); ?>

答案 2 :(得分:0)

使用while循环而不是do ... while

因为当你使用do while循环时,它会一直执行一次,然后它会检查条件,以及为什么你在结果的第一个时候得到-的原因。

因此使用while循环检查条件,如果为true,则循环下的代码将执行,否则不执行。

我严格建议您学习循环。