0

I'm new to PHP. I'm using the following code to generate an excel sheet from Mysql database using PHP.

<?php
    include("../Connection/Connection.php");
    $db_con=new Connection();
    $db_con->get_connection();  //Opens a database connection. This function is contained in the  Connection.php which is included above.

    $result = mysql_query("SELECT * FROM country");
    if (!$result) die('Couldn\'t fetch records');
    $num_fields = mysql_num_fields($result);
    $headers = array();

    for ($i = 0; $i < $num_fields; $i++) 
    {
        $headers[] = mysql_field_name($result , $i);
    }

    $fp = fopen('php://output', 'w');
    if ($fp && $result)
    {
            header('Content-Type: text/csv');
            header('Content-Disposition: attachment; filename="export.csv"');
            header('Pragma: no-cache');
            header('Expires: 0');
            fputcsv($fp, $headers);

            while ($row = mysql_fetch_array($result)) 
            {
                 fputcsv($fp, array_values($row));
            }
            die;
     }
?>

The above code is working and it generates the specified file export.csv but the problem is that it generates each column from MySql in this file twice. In other words, each column is duplicated twice (headers displayed are not duplicated though). What is wrong with this code? What changes should be made so that it displays each column exactly once?

1 Answer 1

2

Use mysql_fetch_row instead.

mysql_fetch_array fetches an array with BOTH string indexes and numeric indexes, so each value is fetched twice. Your code would work with either mysql_fetch_assoc or mysql_fetch_row.

Sign up to request clarification or add additional context in comments.

1 Comment

I did as you say and it worked as expected. Thanks for your time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.