2017-05-15 17 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); 
    } 
相关问题