While Loop only returns one row from 9000+ records

前端 未结 4 1497
南笙
南笙 2021-01-29 06:05

I had a script for this that worked great in PHP 5.3. New host only supports 5.5 so I\'ve done some modifying. So far, I can only get one row to be returned. I\'ve been agonisin

相关标签:
4条回答
  • 2021-01-29 06:40

    Your $row_array replaces every time and you get the last one. change your code to:

    $i = 0;
    while ($row = mysqli_fetch_assoc($result)) {
        $row_array[$i]['title'] = $row['title'];
        $row_array[$i]['year'] = $row['year'];
        $row_array[$i]['author'] = $row['author'];
        $row_array[$i]['journal'] = $row['journal'];
        $row_array[$i]['keywords'] = $row['keywords'];
        $row_array[$i]['abstract'] = $row['abstract'];
        $row_array[$i]['url'] = $row['url'];
        $i++;
    }
    
    echo '{"data":';
        echo json_encode($row_array);
        echo '}';
    
    0 讨论(0)
  • 2021-01-29 06:45

    You need to have a multi-dimensional array and you have taken a single dimensional array.

    So, every time record comes, it overwrites older one.

    Hence, you are getting the last record only.

    Modify your code to:

    $i=0;
    $row_array = array();
    while ($row = mysqli_fetch_assoc($result)) {
      $row_array[$i]['title'] = $row['title'];
      $row_array[$i]['year'] = $row['year'];
      $row_array[$i]['author'] = $row['author'];
      $row_array[$i]['journal'] = $row['journal'];
      $row_array[$i]['keywords'] = $row['keywords'];
      $row_array[$i]['abstract'] = $row['abstract'];
      $row_array[$i]['url'] = $row['url'];
      ++$i;
    }
    
    0 讨论(0)
  • 2021-01-29 06:57
    $row_array= array();
     while ($row = mysqli_fetch_assoc($result)) {
            $tmp = array();
            $tmp['title'] = $row['title'];
            $tmp['year'] = $row['year'];
            $tmp['author'] = $row['author'];
            $tmp['journal'] = $row['journal'];
            $tmp['keywords'] = $row['keywords'];
            $tmp['abstract'] = $row['abstract'];
            $tmp['url'] = $row['url'];
            $row_array[] = $tmp;
        }
    echo '{"data":';
        echo json_encode($row_array);
        echo '}';
    
    0 讨论(0)
  • 2021-01-29 07:02

    Your while loop keeps overwriting the same array elements in the $row_array array.

    To do what you're trying to do: while($row = mysqli_fetch_assoc($result)) { $row_array[] = $row; }

    0 讨论(0)
提交回复
热议问题