Nasıl mysql_query yoluyla elde belirli bir satır sonucu kaldırırım?

3 Cevap php

Ben mysql_data_seek ($ sonuç, 0) sonucu başlangıcına sıfırlamak için kod kullanarak farklı bölgelerinde, her zaman birden çok kez döngü olduğum bir mysql_query sonuç var.

Ben bu sonuçlar üzerinde mysql_fetch_array kullanıyorum, ve $ sonuç birkaç belirli satırları kaldırmak istiyoruz. Normal bir dizi olsaydı unset ($ sonuç [$ row]) temelde eşdeğer. Bunu yapmak için herhangi bir yolu var mı?

Örnek kod:

$result = mysql_query( $sql );
$num_rows = mysql_num_rows( $result );
if( $num_rows ){
    for( $a=0; $a < $num_rows; $a++ ){
    $row = mysql_fetch_array( $result );
    if( my_check_function( $row['test'] ){
    			// do stuff
    } else {
    		// remove this row from $result
    }
  }
}
mysql_data_seek( $result, 0 );

Ben sadece unset ($ row [$ a]) belirli satırı kaldırmak için yok biliyorum, ama veri sonuçları ile bir sonraki arama süresi ve ben döngü sonra aynı orijinal sonuç satırları ile sonuna kadar.

Any help would be appreciated. ps - Not sure why the _'s were removed in my top text and changed to italics, I tried to fix it but it ended up being bold.. :)

3 Cevap

En iyi seçenek, veritabanında bir sorgu çalıştırdıktan sonra herhangi bir kayıt kaldırmak zorunda kalmazsınız sorguları yeniden yazmaktır. Yani, ya da başka bir diziye kayıt eklemek, ve sadece istemediğiniz olanlar üzerinde atlayın.

$survivors = array();

while ($row = mysql_fetch_array($result)) { // while we have records
  if (do_something($row))                   // if this is a good record
    $survivors[] = $row;                    // save it for later
}

print_r($survivors);                        // who survived the cut?
$result = mysql_query( $sql );
$new_rows = mysql_num_rows( $result );
$new_array = array();
if( $num_rows ){
    for( $a=0; $a < $num_rows; $a++ ){
    $row = mysql_fetch_array( $result );
    if( my_check_function( $row['test'] ){
                        // do stuff
         // populate new array with only validated data
         $new_array[$a] = $row;
    } else {
                // remove this row from $result
            // do not remove anything. 
    }
  }
}

PS. Eğer sql sorgusu içinde gereksiz satırları sıralamak değil emin misin?

, Web aşk için, bir SQL sorgusu kendinizi inşa etmeyin. Kullan PDO.