Max*_*nov 1 php mysql while-loop
我有:
$query = mysql_query("SELECT ... ");
while($row = mysql_fetch_array($query)) { first time used; }
...
while($row = mysql_fetch_array($query)) { second time used; }
Run Code Online (Sandbox Code Playgroud)
第二次它不起作用.为什么?
MySQL结果资源有一个内部指针,就像一个PHP数组,当你运行一次时,指针就在最后.您可以使用mysql_data_seek()以下方法重置数据指针:
while ($row = mysql_fetch_array($query)) {
// First time used
}
mysql_data_seek($query, 0);
while ($row = mysql_fetch_array($query)) {
// Second time used
}
Run Code Online (Sandbox Code Playgroud)
... 但可以说更好/更"标准"的方法是通过指针运行一次,将结果存储在临时数组中然后你可以释放结果使用的内存并将数据作为数组循环:
// 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
}
Run Code Online (Sandbox Code Playgroud)
作为旁注,它使用资源效率更高,mysql_fetch_assoc()或者mysql_fetch_row()- 几乎每个用例只需要调用mysql_fetch_assoc(),对于MySQL结果的索引键是非常罕见的,甚至不太常见,你需要索引和关联.
| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |