asked on
<?php // demo/db_to_csv.php
include("latch2.php");
$uid = access_control();
/**
* Export a database table to a CSV file for use in Excel
* https://www.experts-exchange.com/questions/29018496/Export-Data-from-MySql-Using-PHP.html
*/
error_reporting(E_ALL);
echo "<pre>";
// SET YOUR TABLE NAME HERE - OR MAYBE USE THE URL "GET" ARGUMENT
$table_name = 'productCode';
// OPEN THE CSV FILE - PUT YOUR FAVORITE NAME HERE
$csv
= 'storage'
. DIRECTORY_SEPARATOR
. 'EXPORT_'
. date('Ymdhis')
. "_$table_name"
. '.csv'
;
$fp = fopen($csv, 'w');
if (!$fp) trigger_error("UNABLE TO OPEN $csv", E_USER_ERROR);
// GET THE COLUMN NAMES
$sql = "SHOW COLUMNS FROM $table_name";
if (!$res = $mysqli->query($sql))
{
$err
= 'QUERY FAILURE:'
. ' ERRNO: '
. $mysqli->errno
. ' ERROR: '
. $mysqli->error
. ' QUERY: '
. $sql
;
trigger_error($err, E_USER_ERROR);
}
if ($res->num_rows == 0)
{
trigger_error("ERROR: $table_name HAS NO COLUMNS", E_USER_ERROR);
}
else
{
while ($show_columns = $res->fetch_object())
{
$my_columns[] = $show_columns->Field;
}
}
// WRITE THE COLUMN NAMES TO THE CSV
if (!fputcsv($fp, $my_columns)) trigger_error("FAILURE WRITING COLUMN NAMES TO $csv", E_USER_ERROR);
// GET THE ROWS OF DATA
$sql = "SELECT * FROM $table_name";
if (!$res = $mysqli->query($sql))
{
$err
= 'QUERY FAILURE:'
. ' ERRNO: '
. $mysqli->errno
. ' ERROR: '
. $mysqli->error
. ' QUERY: '
. $sql
;
trigger_error($err, E_USER_ERROR);
}
// ITERATE OVER THE DATA SET
while ($row = $res->fetch_row())
{
// WRITE THE COMMA-SEPARATED VALUES.
if (!fputcsv($fp, $row)) trigger_error("FAILURE WRITING DATA TO $csv", E_USER_ERROR);
}
// ALL DONE
fclose($fp);
// SHOW THE CLIENT A LINK
echo "<p><a href=\"$csv\">$csv</a></p>" . PHP_EOL;