在开始之前,我知道我使用的是过时的方法,应该学习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; ?>
没有。
代码有什么问题?
答案 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上一直看到这个,我不明白。你只是从其他程序中复制代码,而没有真正理解为什么它的编写方式是这样的吗?
并养成总是围绕if
,while
,foreach
等声明的主体,即使只有一个声明在体内。这样,当你添加第二个语句时,你不会冒险忘记在它们周围添加大括号,我怀疑你是如何在这个混乱中结束的。
此外,使用一个体面的IDE,其编辑器缩进代码以镜像结构。然后你可能会注意到第二个语句不在循环中。