Here, In this post i will show you how to fetch data from MySQL using PDO and sending it to the browser as a CSV, using the fputcsv() function.
Example code:
Substitute the dbname, username and password fields with the appropriate credentials and name for your database, and modify the database query to suit your use case. If you are using a different library than PDO, then obviously you'll need to change the database function calls to use that library instead.for the sake of reliability, I am using magento's Database 'catalog_product_entity' table.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$dsn = "mysql:host=localhost;dbname=magento";
$username = "root";
$password = "";
try {
$pdo = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
// error handler
}
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="catalog_product.csv"');
try {
$stmt = $pdo->prepare("SELECT * FROM catalog_product_entity ORDER BY entity_id");
$stmt->execute();
$output = fopen('php://output', 'w');
$header = true;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($header) {
fputcsv($output, array_keys($row));
$header = false;
}
fputcsv($output, $row);
}
fclose($output);
} catch (PDOException $e) {
// error handler
}
?>
The example code writes out a header line containing the column names, and then one line for each record.
If you prefer to write the data out to a file, remove the two header lines and change php://output to the filename.

0 Comments