2

クエリ結果を複数回ループしたいのですが、次の 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 に答える