PHP және MySQL: Бөлінген қойындыға немесе CSV файлына сұрауды экспорттау

Осы демалыс күндері мен салғым келді PHP кез келген сақтық көшірмесін жасайтын бет MySQL сұрауды немесе кестені қойындымен бөлінген файлға енгізіңіз. Желідегі мысалдардың көпшілігінде бағандар қатаң кодталған.

Менің жағдайда, мен бағандардың динамикалық болуын қаладым, сондықтан баған атаулары бар тақырып жолын құру үшін алдымен кестенің барлық өріс атауларын айналдырып, содан кейін қалған деректер жолдары үшін барлық жазбаларды айналдыруға тура келді. Сондай-ақ, тақырыпты браузер файлдың күні мен уақыт белгісімен файл түріндегі (txt) файлды жүктеп алуды бастайтындай етіп орнаттым.

PHP тіліндегі MySQL-тен қойындының бөлінген экспорты

<?php
$today = date("YmdHi");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$today."_Backup.txt\"");
$conn = new mysqli("hostname", "username", "password", "database_name"); // Replace with your database credentials

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$query = "SELECT * FROM `mytable` ORDER BY `myorder`";
$result = $conn->query($query);

if ($result->num_rows > 0) {
    $fields = $result->fetch_fields();
    
    // Prepare the header row
    $header = [];
    foreach ($fields as $field) {
        $header[] = $field->name;
    }
    $data = implode("\t", $header) . "\n";

    // Fetch and process the data rows
    while ($row = $result->fetch_assoc()) {
        $rowValues = [];
        foreach ($fields as $field) {
            $rowValues[] = $row[$field->name];
        }
        $data .= implode("\t", $rowValues) . "\n";
    }

    // Output the data
    echo $data;
} else {
    echo "No data found";
}

// Close the database connection
$conn->close();
?>

Әр бөліктің түсіндірмесі бар кодты кезең-кезеңімен қарастырайық:

<?php
// Get the current date and time in a specific format
$today = date("YmdHi");

// Set HTTP headers for file download
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$today."_Backup.txt\"");

// Create a MySQL database connection
$conn = new mysqli("hostname", "username", "password", "database_name"); // Replace with your database credentials

// Check if the database connection was successful
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
// Define the SQL query to select data from the `mytable` table
$query = "SELECT * FROM `mytable` ORDER BY `myorder`";

// Execute the SQL query
$result = $conn->query($query);

// Check if there are any rows returned
if ($result->num_rows > 0) {
    // Fetch the field (column) names
    $fields = $result->fetch_fields();

    // Prepare the header row for the export file
    $header = [];
    foreach ($fields as $field) {
        $header[] = $field->name;
    }
    $data = implode("\t", $header) . "\n";
    // Fetch and process the data rows
    while ($row = $result->fetch_assoc()) {
        $rowValues = [];
        foreach ($fields as $field) {
            $rowValues[] = $row[$field->name];
        }
        $data .= implode("\t", $rowValues) . "\n";
    }
    // Output the data to the browser
    echo $data;
} else {
    // If no data is found, display a message
    echo "No data found";
}

// Close the MySQL database connection
$conn->close();
?>

Бұл код MySQL дерекқор кестесінен деректерді қойындымен бөлінген мәтіндік файлға тиімді экспорттайды және дерекқорға қосылу қателері мен бос нәтиже жиындары сияқты әртүрлі сценарийлерді өңдейді.

Үтірмен бөлінген мәндерді PHP-де MySQL-ден экспорттау

Мен деректерді CSV файлы ретінде экспорттау үшін кодты өзгерте аламын. Міне, CSV экспорты үшін жаңартылған код:

<?php
// Get the current date and time in a specific format
$today = date("YmdHi");

// Set HTTP headers for file download
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=\"".$today."_Backup.csv\"");

// Create a MySQL database connection
$conn = new mysqli("hostname", "username", "password", "database_name"); // Replace with your database credentials

// Check if the database connection was successful
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Define the SQL query to select data from the `mytable` table
$query = "SELECT * FROM `mytable` ORDER BY `myorder`";

// Execute the SQL query
$result = $conn->query($query);

// Check if there are any rows returned
if ($result->num_rows > 0) {
    // Prepare the output file handle for writing
    $output = fopen('php://output', 'w');

    // Fetch and process the data rows
    while ($row = $result->fetch_assoc()) {
        // Output each row as a CSV line
        fputcsv($output, $row);
    }

    // Close the output file handle
    fclose($output);
} else {
    // If no data is found, display a message
    echo "No data found";
}

// Close the MySQL database connection
$conn->close();
?>

Бұл өзгертілген кодта:

Бұл код MySQL кестесіндегі деректерді CSV файлы ретінде экспорттайды, бұл пайдаланушыларға Excel сияқты электрондық кесте қолданбаларында ашуды және олармен жұмыс істеуді жеңілдетеді. Дерекқордың тіркелгі деректерін өзіңіздікімен ауыстыруды ұмытпаңыз.

Мобильді нұсқадан шығу