1 var工作,1不工作。为什么?

时间:2013-11-23 03:31:44

标签: php echo var

在开始之前,我知道我使用的是过时的方法,应该学习PDO ......

<?php 
    $f = mysql_query("SELECT featured, date_featured FROM pins WHERE id='$pinDetails->id'") or die(mysql_error());

    while($g = mysql_fetch_array($f)) 
        $feature = $g['featured'];

    $on = $g['date_featured'];
?>

但是当我回应......

<?php echo $feature; ?>有效,但<?php echo $on; ?>没有。

代码有什么问题?

1 个答案:

答案 0 :(得分:4)

您没有在while循环的主体周围放置大括号,因此您的代码相当于:

while ($g = mysql_fetch_array($f)) {
    $feature = $g['featured'];
}
$on = $g['date_featured'];

因此,在循环结束之前,不要尝试设置$on。当mysql_fetch_array()返回false时,它会完成,并将其分配给$g。所以你在做:

$on = false['date_featured'];

由于您显然只是获得一行,因此您不需要while循环。只需写下:

$g = mysql_fetch_assoc($f);
$feature = $g['featured'];
$on = $g['date_featured'];

为什么在不需要的时候写一个循环?我在SO上一直看到这个,我不明白。你只是从其他程序中复制代码,而没有真正理解为什么它的编写方式是这样的吗?

并养成总是围绕ifwhileforeach等声明的主体,即使只有一个声明在体内。这样,当你添加第二个语句时,你不会冒险忘记在它们周围添加大括号,我怀疑你是如何在这个混乱中结束的。

此外,使用一个体面的IDE,其编辑器缩进代码以镜像结构。然后你可能会注意到第二个语句不在循环中。