0

我想从数据库中获取表格,然后按文件(每个文件中的 50 个条目)分解输出数据:list01.txt、list02.txt... 但不知何故,我对如何更有效地分解数据的问题感到困惑。

if ( $result = $mysqli->query($query) ) {

    icount = 0;
    while ( $row = mysqli_fetch_array($result) ) {
        if ( icount % 50 == 0 ) {
            $snum = int( icount / 50 );
            $filename = 'scripts/spisok'.$snum.'.txt';
            $handle = fopen( $filename, 'w' );
        }
        fwrite( $filename, $row['uname'].';'.$row['email'].'<br />' );
        icount++;
    }

    echo 'ok';
    $result->free();

}

我可以先将 $result 分解为 50 个条目的数组,然后将它们全部写入吗?对不起,我是 PHP 新手

4

2 回答 2

1

你也可以使用array_chunk

<?php
  if ( $result = $mysqli->query( $query ) ) {
    $data = array();
    while( $row = mysqli_fetch_array( $result ) ) {
      $data[] = $row['uname'].';'.$row['email'];
    }
    $result->free();

    // divide an array into a desired number of split lists
    $chunks = array_chunk( $data, 50 );
    // loop through chunks
    foreach( $chunks as $index => $chunk ) {
      $file   = 'scripts/spisok'.( $index + 1 ).'.txt';
      $chunk  = implode( "<br />", $chunk );
      file_put_contents( $file, $chunk );
      // or
      /*
      $handle = fopen( $file, 'w' );
      fwrite( $handle, $chunk );
      fclose( $handle );
      */
    }
    unset( $data, $chunks );
  }
?>
于 2013-08-19T21:28:24.417 回答
0

除了这里和那里的一些语法错误之外,您所做的事情并没有什么特别的错误。

尝试这个 :-

if ( $result = $mysqli->query($query) ) {

    $icount = 0;
    $handle = NULL;
    while ( $row = mysqli_fetch_array($result) ) {
        if ( $icount % 50 == 0 ) {
            if ( $handle !== NULL ) {
               fclose($handle);
            }
            $snum = int( $icount / 50 );
            $filename = 'scripts/spisok'.$snum.'.txt';
            $handle = fopen( $filename, 'w' );
        }
        fwrite( $handle, $row['uname'].';'.$row['email'].'<br />' );
        $icount++;
    }

    fclose($handle);
    echo 'ok';
    $result->free();

}
于 2013-08-19T21:20:11.097 回答