Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 而($row=mysql\u fetch\u array($query))在第二次运行时不起作用_Php_Mysql_While Loop - Fatal编程技术网

Php 而($row=mysql\u fetch\u array($query))在第二次运行时不起作用

Php 而($row=mysql\u fetch\u array($query))在第二次运行时不起作用,php,mysql,while-loop,Php,Mysql,While Loop,我有: 第二次它不起作用了。为什么?第二次它将不起作用,因为您已经检索了所有行。因此,它返回false。第二次将不起作用,因为您已经检索了所有行。因此它返回false。这是因为内部数据指针已到达其末端。要重新读取查询,请使用mysql\u data\u seek倒带指针,或重新发出查询。这是因为内部数据指针已到达其末端。要重新读取查询,请使用mysql\u data\u seek倒带指针,或重新发出查询。在使用第二次循环之前,将结果指针重置到结果集的开头 在使用第二次循环之前,将结果指针重置为结

我有:


第二次它不起作用了。为什么?

第二次它将不起作用,因为您已经检索了所有行。因此,它返回false。

第二次将不起作用,因为您已经检索了所有行。因此它返回false。

这是因为内部数据指针已到达其末端。要重新读取查询,请使用mysql\u data\u seek倒带指针,或重新发出查询。

这是因为内部数据指针已到达其末端。要重新读取查询,请使用mysql\u data\u seek倒带指针,或重新发出查询。

在使用第二次循环之前,将结果指针重置到结果集的开头


在使用第二次循环之前,将结果指针重置为结果集的开头


您已经检索了所有行,因此必须运行另一个查询,或者可以将第一个循环中的值推送到一个数组中,然后在第二次要显示相同数据时输出该数组


或者使用mysql_data_seek

您已经检索了所有行,因此必须运行另一个查询,或者您可以将第一个循环中的值推送到一个数组中,然后在第二次要显示相同数据时输出该数组


或者使用mysql\u data\u seek

一个mysql结果资源有一个内部指针,很像一个PHP数组,当您运行一次后,指针就在末尾。您可以使用以下方法重置数据指针:

…但可以说更好/更标准的方法是运行指针一次,将结果存储在临时数组中,然后释放结果使用的内存,并将数据作为数组循环:

while ($row = mysql_fetch_array($query)) {
  // First time used
}
mysql_data_seek($query, 0);
while ($row = mysql_fetch_array($query)) {
  // Second time used
}

作为旁注,使用or更节省资源-几乎每个用例都只调用mysql_fetch_assoc,为mysql结果索引键是非常少见的,而同时需要索引和关联键则更不常见。

mysql结果资源有一个内部指针,很像PHP数组,当你运行一次,指针就在末尾。您可以使用以下方法重置数据指针:

…但可以说更好/更标准的方法是运行指针一次,将结果存储在临时数组中,然后释放结果使用的内存,并将数据作为数组循环:

while ($row = mysql_fetch_array($query)) {
  // First time used
}
mysql_data_seek($query, 0);
while ($row = mysql_fetch_array($query)) {
  // Second time used
}

作为旁注,使用or更节省资源-几乎每个用例都只调用mysql\u fetch\u assoc,为mysql结果索引键是非常罕见的,更不常见的是,您需要索引和关联。

为什么要运行它两次…?您能写下$query中的内容吗?您想做什么?你不能将你需要的数据存储在一个更容易重用的数组中吗?开玩笑地说,为什么你认为循环第一次就停止了…?为什么你想运行它两次…?你能写下你在$query中得到的吗?你想做什么?难道你不能将你需要的数据存储在一个更容易重用的数组中吗?开玩笑地说,为什么你认为循环会在第一次停止。。。?
while ($row = mysql_fetch_array($query)) {
  // First time used
}
mysql_data_seek($query, 0);
while ($row = mysql_fetch_array($query)) {
  // Second time used
}
// Do the query
$query = mysql_query("SELECT ... ");

// Cache the results in an array
$results = array();
while ($row = mysql_fetch_array($query)) {
  $results[] = $row;
}

// Free the result resource
mysql_free_result($query);

foreach ($results as $row) {
  // First time used
}
foreach ($results as $row) {
  // Second time used
}