Как удалить конкретный результат строки, полученный с помощью mysql_query? - PullRequest
3 голосов
/ 05 августа 2009

У меня есть результат mysql_query, который я перебираю несколько раз в разных частях кода, каждый раз используя mysql_data_seek ($ result, 0) для сброса в начало результата.

Я использую mysql_fetch_array для этих результатов и хотел бы удалить несколько определенных строк из результата $. В основном эквивалент unset ($ result [$ row]), если это был обычный массив. Есть ли способ сделать это?

Пример кода:

$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 );

Я знаю, что могу просто сделать unset ($ row [$ a]), чтобы удалить эту конкретную строку, но после поиска данных и циклического просмотра результатов в следующий раз я получаю те же исходные строки результатов.

Любая помощь будет оценена. ps - не уверен, почему _ были удалены в моем верхнем тексте и заменены курсивом, я пытался это исправить, но в итоге это было выделено жирным шрифтом ..:)

Ответы [ 3 ]

7 голосов
/ 05 августа 2009

Лучший вариант - переписать ваши запросы, чтобы вам не пришлось удалять записи после выполнения запроса к вашей базе данных. Или вставьте свои записи в другой массив и просто пропустите те, которые вам не нужны.

$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?
2 голосов
/ 05 августа 2009
$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. Вы уверены, что не можете отсортировать ненужные строки в запросе sql?

0 голосов
/ 15 октября 2009

Пожалуйста, ради всего святого, не создавайте SQL-запрос самостоятельно. Используйте PDO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...