Php 如何删除通过mysql\u查询获得的特定行结果?

Php 如何删除通过mysql\u查询获得的特定行结果?,php,mysql,Php,Mysql,我有一个mysql\u查询结果,我在代码的不同部分循环多次,每次都使用mysql\u data\u seek($result,0)重置到结果的开头 我正在对这些结果使用mysql\u fetch\u数组,并希望从$result中删除一些特定的行。如果它是普通数组,则基本上相当于unset($result[$row])。有没有办法做到这一点 示例代码: $result = mysql_query( $sql ); $num_rows = mysql_num_rows( $result ); if(

我有一个mysql\u查询结果,我在代码的不同部分循环多次,每次都使用mysql\u data\u seek($result,0)重置到结果的开头

我正在对这些结果使用mysql\u fetch\u数组,并希望从$result中删除一些特定的行。如果它是普通数组,则基本上相当于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 );
$result=mysql\u查询($sql);
$num\u rows=mysql\u num\u rows($result);
如果($num_行){
对于($a=0;$a<$num_行;$a++){
$row=mysql\u fetch\u数组($result);
if(my_check_函数($row['test'])){
//做事
}否则{
//从$result中删除此行
}
}
}
mysql_data_seek($result,0);
我知道我可以简单地执行unset($row[$a])来删除那个特定的行,但是在数据查找之后,我会在下一次遍历结果时得到相同的原始结果行

任何帮助都将不胜感激。
ps-不确定为什么我的顶部文本中的u被删除并改为斜体,我试图修复它,但结果是粗体的。:

最好的选择是重新编写查询,这样在对数据库运行查询后就不必删除任何记录。或者将您的记录插入另一个数组,只跳过您不需要的记录

$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\u查询($sql);
$new\u rows=mysql\u num\u rows($result);
$new_array=array();
如果($num_行){
对于($a=0;$a<$num_行;$a++){
$row=mysql\u fetch\u数组($result);
if(my_check_函数($row['test'])){
//做事
//仅使用已验证的数据填充新阵列
$new_数组[$a]=$row;
}否则{
//从$result中删除此行
//不要移走任何东西。
}
}
}

PS.你确定不能在sql查询中整理出不必要的行吗?

出于对web的热爱,请不要自己构建sql查询。使用。

好的,谢谢,这就是我最后要做的。我很好奇是否有办法直接更改mysql查询结果本身,我猜不是:)Rob,结果不是数组。这就是为什么要通过mysql_fetch_数组(或_fetch_对象)来获取值。因此,您必须逐个处理每一行。
$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. 
    }
  }
}