2017-05-15 16 views
0

我正在使用php 7,試圖從存儲在表中的數據獲取csv文件,其中字段爲 「id」,「name」,「code」 , 「類別」, 「價格」, 「stock_count」警告:mysqli_fetch_field_direct():字段偏移量對於結果集在第16行無效

一切都很好,但得到的警告一樣

<b>Warning</b>: mysqli_fetch_field_direct(): Field offset is invalid for resultset in <b>C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php</b> on line <b>8</b><br /> 


<b>Warning</b>: mysqli_fetch_field_direct(): Field offset is invalid for resultset in <b>C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php</b> on line <b>8</b><br /> 

代碼如下

<?php 
     $con= mysqli_connect("localhost", "root", "", "phpp"); 
     $result=mysqli_query($con,"select * from top"); 
     $num_column=mysqli_num_rows($result); 
     $csv_header = ''; 
     for($i=0;$i<$num_column;$i++) 
     { 
      if(isset(mysqli_fetch_field_direct($result,$i)->name)) 
      { 
       $csv_header .= '"' . mysqli_fetch_field_direct($result,$i)->name . '",'; 
      } 
     } 
     $csv_header .= "\n"; 
     $csv_row =''; 
     while($row = mysqli_fetch_row($result)) 
     { 
      for($i=0;$i<$num_column;$i++) 
      {   
       if(isset($row[$i])) 
       { 
        $csv_row .= '"' . $row[$i] . '",'; 
       }    
      } 
      $csv_row .= "\n"; 
     } 
     /* Download as CSV File */ 
     header('Content-type: application/csv'); 
     header('Content-Disposition: attachment; filename=toy_csv.csv'); 
     echo $csv_header . $csv_row; 
     exit; 
    ?> 

回答

1

可能是因爲你是循環的行,而不是你的柱的側向承載力

$num_column=mysqli_num_rows($result); // rows != Columns 

我認爲你正在尋找http://php.net/manual/en/mysqli-result.fetch-fields.php,你可以這樣做:

foreach(mysqli_fetch_fields($result) as $field){ 
    $csv_header .= '"' . $field->name . '",'; 
    unset($field); 
} 

如果您使用的是聲明,則可以執行如下操作:

$meta = mysqli_stmt_result_metadata($stmt); 
    foreach (mysqli_fetch_field($meta) as $field) { 
     $csv_header .= '"' . $field->name . '",'; 
     unset($field); 
    } 
相關問題