$sql = mysql_query("SELECT * FROM table WHERE user='$user'" );
while($data=mysql_fetch_array($sql)){
echo $data['user']; //this is fine
}
echo $data['user'];
$data=mysql_fetch_array($sql);
echo $data['user'];
最后两个回显是空的?
我需要在循环外部有一个数组,它等效于“最后”循环周期。
最佳答案
while 循环不断获取数据,直到没有更多数据,因此 mysql_fetch_array
返回 false
。最后一个值 false
在循环结束后仍在 $data
中,但仅使用 echo
打印它,不会打印任何内容你可以看到。 mysql_fetch_array
和 echo
的下一次调用也是如此。您可以通过对 $data
变量执行 var_dump
来检查这一点。这将向您显示它包含 bool 值 false
。
如果你想在循环结束后能够使用数据,你可以将你获取的所有数据保存到一个大数组中。如果您正在获取大量数据,那可能是一个糟糕的选择,但是您应该能够从那里自己更改它,以便您可以保存和使用有用的数据。要将所有数据存储在数组中,请将循环更改为:
$alldata = array();
while($data=mysql_fetch_array($sql))
{
echo $data['user'];
$alldata[] = $data;
}
例如,您随后可以遍历 $alldata
以再次检查结果。
更新:在您的上一条评论中,您说您想要访问获取的最后一条记录。你可以这样做:
$lastdata = array();
while($data=mysql_fetch_array($sql))
{
echo $data['user'];
$lastdata = $data;
}
$lastdata
将包含结果中的最后一条记录。
关于PHP/SQL 无法在 while 循环后使用来自查询的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19743466/