Php 1个变量有效,1个变量无效;T为什么?

Php 1个变量有效,1个变量无效;T为什么?,php,echo,var,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['dat

在我开始之前,我知道我正在使用过时的方法,应该学习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'];
?>

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

while ($g = mysql_fetch_array($f)) {
    $feature = $g['featured'];
}
$on = $g['date_featured'];
因此,在循环完成之前,它不会尝试设置
$on
。当
mysql\u fetch\u array()
返回
false
,并将其分配给
$g
时,它就会结束。所以你在做:

$on = false['date_featured'];
因为您显然只得到一行,所以不需要
while
循环。只要写下:

$g = mysql_fetch_assoc($f);
$feature = $g['featured'];
$on = $g['date_featured'];
为什么在不需要的时候编写循环?我一直看到这一切,我不明白。你只是从其他程序中复制代码,而不真正理解它为什么是这样写的吗

养成习惯,在
if
while
foreach
等语句的主体周围总是放上大括号,即使主体中只有一条语句。这样,当你添加第二个语句时,你就不会忘记在它们周围添加大括号,我怀疑这就是你最终陷入困境的原因


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

您在
while
循环时没有在
主体上加括号,因此您的代码相当于:

while ($g = mysql_fetch_array($f)) {
    $feature = $g['featured'];
}
$on = $g['date_featured'];
因此,在循环完成之前,它不会尝试设置
$on
。当
mysql\u fetch\u array()
返回
false
,并将其分配给
$g
时,它就会结束。所以你在做:

$on = false['date_featured'];
因为您显然只得到一行,所以不需要
while
循环。只要写下:

$g = mysql_fetch_assoc($f);
$feature = $g['featured'];
$on = $g['date_featured'];
为什么在不需要的时候编写循环?我一直看到这一切,我不明白。你只是从其他程序中复制代码,而不真正理解它为什么是这样写的吗

养成习惯,在
if
while
foreach
等语句的主体周围总是放上大括号,即使主体中只有一条语句。这样,当你添加第二个语句时,你就不会忘记在它们周围添加大括号,我怀疑这就是你最终陷入困境的原因


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

并不意味着有任何错误?那么,
date\u
的结果是什么值?该值是Y-m-d H:i:s格式的日期戳,但没有显示,没有错误,只是空白。@Hanky웃Panky
fetch\u array
返回一个包含数字键和关联键的数组(我以前没有纠正过吗?)它没有打印,因为它超出了while()循环并不意味着有任何错误?那么
date\u
在结果中有什么值?该值是Y-m-d H:I:s格式的日期戳,但没有显示,没有错误,一片空白。@Hanky웃Panky
fetch\u array
返回一个同时包含数字键和关联键的数组(我以前没有纠正过吗?)它没有打印出来,因为它已过期()感谢您的解释。我没有意识到括号,我把代码从某个地方工作,只是改变了变量——甚至没有考虑我想从DB感谢中得到的解释。我没有意识到支架,我把代码从某个地方工作,只是改变了变量——甚至没有考虑我试图从数据库中得到什么。