PHP/SQL 无法在 while 循环后使用来自查询的数据

标签 php mysql

$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_arrayecho 的下一次调用也是如此。您可以通过对 $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/

相关文章:

java - 我收到此错误 java.sql.SQLException : Subquery returns more than 1 row

php - 字符串值比较优化 MySQL 查询

php - 我是使用 fopen 还是 curl 加载给定 PHP 中的 URL 的 XML 文件

php - MD5、密码散列和盐位

mysql查找子组最大值的总和

mysql - 如何确保插入 SQL View 的行将是该 View 的元素?

php - 取一个表到另一个表的属性的平均值

php - Drupal 7 - 通知 : Undefined index: und in include()

php - 如何将 2 个字符串插入到数据库的 1 列中? (代码点火器)

python - 在 virtualenv 下 pip install mysql==1.2.3 (将 Django 部署到 Amazon Elastic Beanstalk)