如果在获取期间连接丢失,mysql_fetch_array会失败吗?

时间:2012-12-11 17:00:32

标签: php mysql

我想在查询结果中循环多次,我有两种方法:

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)还是安全的?

1 个答案:

答案 0 :(得分:3)

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

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