警告:mysqli_fetch_field_direct(): 字段偏移量对结果集无效



我正在使用 PHP 7 尝试从存储在表中的数据中获取 CSV 文件,哪些字段是"ID"、"名称"、"代码"、"类别"、"价格"、"stock_count">

事情很好,但收到警告,例如

警告:mysqli_fetch_field_direct((:字段偏移量对于第 8 行 C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php 第8 行的结果集无效

警告:mysqli_fetch_field_direct((:字段偏移量对于第 8 行 C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php 第8 行的结果集无效

代码如下

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

可能是因为你正在循环 ROWS 而不是你的列

$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);
    }

最新更新