2

我想通过我的查询结果循环多次,我有两种方法:

1-        
while($data = mysql_fetch_array($res ,  MYSQL_ASSOC)
{
array_push($new_arr , $data);
}
foreach($sites as $s){
  foreach($new_arr as $d)
  {
  //some code
  }
}

2-
foreach($sites as $s){
  while($data = mysql_fetch_array($res ,  MYSQL_ASSOC)
  {
  //some code
  }
mysql_data_seek($res,0);//set the pointer 
}

我的问题:我认为选项 2 更有效,但如果我在 mysql_fetch_array(选项 2)期间失去与 db 的连接怎么办?我得到了分配的结果;这大约需要 10-20 分钟。这会影响查询结果($res)还是安全?

4

1 回答 1

3

当您执行 mysql_query() 时,数据被映射到 mysql 客户端分配的缓冲区,因此失去连接是无关紧要的。您引用的第一种方法将创建数据的进一步副本作为 PHP 数组 - 这不是很有效。

另外,WTF 是嵌套循环($sites)在做什么?看起来您的数据没有规范化,或者您的算法非常糟糕。

于 2012-12-11T17:07:15.033 回答