如何在下一个<;中从while函数调用访问PHP变量;?php?>;单独HTML的标签?

如何在下一个<;中从while函数调用访问PHP变量;?php?>;单独HTML的标签?,php,mysql,Php,Mysql,如何从下一个标记中的while(mysql\u fetch\u array($query))函数调用中访问PHP变量以获得单独的HTML <body> <?php $sql="select * from $table order by id desc"; $query=mysql_query($sql) or die(mysql_error()); while($result=mysql_fetch_array($query)){ $id=$re

如何从下一个
标记中的while(mysql\u fetch\u array($query))函数调用中访问PHP变量以获得单独的HTML

<body>
<?php
    $sql="select * from $table order by id desc";
    $query=mysql_query($sql) or die(mysql_error());
    while($result=mysql_fetch_array($query)){
    $id=$result[id];
    $subject=$result[subject];
    $subjectpic=$result[subjectpic];
    $content=$result[content];

    //global $id, $subject, $subjectpic, $content; ?
    }
?>
<div class="subject">
<?php
    print"$subject";
?>
</div>
<div class="subjectpic">
<?php
    print"$subjectpic";
?>
</div>
</body>


非常感谢

$subject
和其他变量仅打印最后一行的值。如果你打算在数组中循环的时候迭代变量的值,考虑在<代码>内打印/回传它们,而块本身。
<body>
<?php
    $sql="select * from $table order by id desc";
    $query=mysql_query($sql) or die(mysql_error());
    while($result=mysql_fetch_array($query)){
      $id=$result['id'];
      $content=$result['content'];
?>
  <div class="subject"><?php print $result['subject']; ?></div>
  <div class="subjectpic"><?php print $result['subjectpic']; ?></div>
<?php } ?>
</body>
    //global $id, $subject, $subjectpic, $content; ?
?>
<div class="subject">
<?php
    print"$subject";
?>
</div>
<div class="subjectpic">
<?php
    print"$subjectpic";
?>
</div>
<?php
    }
?>
</body>

此版本更具可读性,但:

<body>
<?php
    $sql="select * from $table order by id desc";
    $query=mysql_query($sql) or die(mysql_error());
    while($result=mysql_fetch_array($query)){
      $id=$result['id'];
      $content=$result['content'];
      sprintf('<div class="subject">%s</div>'."\n",    $result['subject']);
      sprintf('<div class="subjectpic">%s</div>'."\n", $result['subjectpic']);
    }
?>
</body>

只需将大括号向下移动即可
    //global $id, $subject, $subjectpic, $content; ?
?>
<div class="subject">
<?php
    print"$subject";
?>
</div>
<div class="subjectpic">
<?php
    print"$subjectpic";
?>
</div>
<?php
    }
?>
</body>
//全局$id、$subject、$subjectpic、$content?
?>

您可以在这里的手册中找到:-如果您在理解变量实际是什么方面有问题,您可以在这里找到:。同样,循环对您来说可能是新事物,没问题,虽然您有问题,但答案在手册中:。在我下面的回答中,我从未说过
块有作用域。我是这么说的吗?OP试图在
中声明局部作用域变量,而{}
则试图在右大括号外打印它们!!该代码按原样工作。当然,它只输出最后一行。您需要学习引用变量:
print$subject
$result['content'].Hmm。。他意识到了这一愚蠢。同样编辑了我的答案…:)请注意,
mysql
扩展被降级。一个while块在PHP中没有本地作用域。数据库结果集不能有最后一行。@hakre:这一次,我不明白你的意思。你能详细说明一下吗?我不介意否决票:)只打印最后一行的值-如果结果没有最后一行(即:零行),那么就没有这样的值-仅此而已。在这种情况下,应该有适当的代码检查来处理这种情况。。不管怎么说,抓得不错……:)第二个是我以前的代码。第一个是解决我的问题!非常感谢你!
    //global $id, $subject, $subjectpic, $content; ?
?>
<div class="subject">
<?php
    print"$subject";
?>
</div>
<div class="subjectpic">
<?php
    print"$subjectpic";
?>
</div>
<?php
    }
?>
</body>