【问题标题】:How do I remove a specific row result obtained through mysql_query?如何删除通过 mysql_query 获得的特定行结果?
【发布时间】:2009-08-04 21:16:29
【问题描述】:

我有一个 mysql_query 结果,我在代码的不同部分循环了多次,每次都使用 mysql_data_seek( $result, 0 ) 重置到结果的开头。

我在这些结果上使用了 mysql_fetch_array,并且想从 $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 );

我知道我可以简单地执行 unset( $row[$a] ) 来删除该特定行,但是在数据搜索之后,我会在下次循环结果时得到相同的原始结果行。

任何帮助将不胜感激。 ps - 不知道为什么 _ 在我的顶部文本中被删除并改为斜体,我试图修复它但它最终变成了粗体.. :)

【问题讨论】:

    标签: php mysql


    【解决方案1】:

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

    $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?
    

    【讨论】:

    • 好的,谢谢,这就是我最终要做的。我很好奇是否有办法直接更改 mysql_query 结果本身,猜不是:)
    • Rob,结果不是数组。这就是为什么你通过 mysql_fetch_array(或 _fetch_object)传递它来获取你的值。因此,您必须逐行处理每一行。
    【解决方案2】:
    $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 查询中整理出不必要的行吗?

    【讨论】:

      【解决方案3】:

      出于对网络的热爱,请不要自己构建 SQL 查询。使用PDO

      【讨论】:

        猜你喜欢
        • 2011-04-30
        • 1970-01-01
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多