CRM ۽ ڊيٽا پليٽ فارم

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);
}
  • اسان "YmdHi" فارميٽ ۾ موجوده تاريخ ۽ وقت ٺاهيندا آهيون ۽ ان ۾ ذخيرو ڪندا آهيون $today ڪشش.
  • HTTP هيڊر مقرر ڪيا ويا آهن وضاحت ڪرڻ لاءِ ته مواد کي آڪٽيٽ-اسٽريم (بائنري ڊيٽا) طور سمجهيو وڃي ۽ مخصوص فائل نالي سان فائل ڊائون لوڊ کي ٽرگر ڪيو وڃي.
  • ايڪسٽينشن کي استعمال ڪندي، اسان ٺاھيون ٿا ھڪڙو MySQL ڊيٽابيس ڪنيڪشن، جڳھ ھولڊرز کي توھان جي حقيقي ڊيٽابيس جي سندن سان بدلائي.
  • اسان چيڪ ڪيو ته ڊيٽابيس ڪنيڪشن ڪامياب ٿي ويو. اسان اسڪرپٽ کي ختم ڪريون ٿا ۽ هڪ غلطي پيغام ڏيکاري ٿو جيڪڏهن ڪو غلطي آهي.
// 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";
  • اسان سڀني ڊيٽا کي چونڊڻ لاءِ SQL سوال جي وضاحت ڪريون ٿا mytable ٽيبل، ان کي ترتيب ڏيندي myorder ڪالمن.
  • سوال تي عمل ڪيو ويو آهي، ۽ نتيجو محفوظ ڪيو ويو آهي ۾ $result ڪشش.
  • اسان چيڪ ڪريون ٿا ته ڇا ڪي قطارون آهن واپسي جي جانچ ڪندي num_rows نتيجو اعتراض جي ملڪيت.
  • اسان استعمال ڪريون ٿا fetch_fields() فيلڊ (ڪالمن) جا نالا ٻيهر حاصل ڪرڻ ۽ ان ۾ ذخيرو ڪرڻ لاء $fields صف.
  • ايڪسپورٽ فائل لاء هيڊر قطار فيلڊ جي نالن ذريعي لوپ ڪندي ۽ انهن کي ٽيب سان گڏ ڪندي تيار ڪئي وئي آهي.
    // 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";
    }
  • اسان استعمال ڪريون ٿا a while لوپ استعمال ڪندي نتيجو سيٽ مان هر ڊيٽا قطار کي آڻڻ لاء fetch_assoc().
  • لوپ جي اندر، اسان هر قطار جي قيمت تيار ڪريون ٿا فيلڊ ذريعي ورجائي ۽ لاڳاپيل ڊيٽا گڏ ڪري.
  • هر قطار جي قيمتن کي ٽيب سان ڳنڍيو ويو آهي ته جيئن ٽيب جي حد بندي ٿيل قطار ٺاهي سگهجي، ۽ هي قطار شامل ڪئي وئي $data ڪشش.
    // 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();
?>
  • جيڪڏهن ڊيٽا ملي آهي (چڪ ڪيو ويو آهي num_rows)، اسان ڳنڍي ڊيٽا کي گونج ڪندا آهيون، جيڪو برآمد فائل جو مواد آهي. اهو استعمال ڪندڙ جي برائوزر ۾ فائل ڊائون لوڊ ڪري ٿو.
  • جيڪڏهن ڪو به ڊيٽا نه مليو آهي، اسان هڪ پيغام ڏيکاري ٿو جيڪو ظاهر ڪري ٿو ته ڪابه ڊيٽا موجود ناهي.
  • اسان استعمال ڪندي MySQL ڊيٽابيس ڪنيڪشن بند ڪريون ٿا $conn->close() وسيلن کي ڇڏڻ لاء.

هي ڪوڊ موثر طريقي سان هڪ MySQL ڊيٽابيس ٽيبل مان ڊيٽا برآمد ڪري ٿو ٽئب-حد ٿيل ٽيڪسٽ فائل ۾ ۽ مختلف منظرنامي کي سنڀاليندو آهي، جهڙوڪ ڊيٽابيس ڪنيڪشن ۾ غلطيون ۽ خالي نتيجا سيٽ.

ڪاما کان الڳ ڪيل قدر MySQL کان PHP ۾ برآمد ڪريو

مان 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();
?>

ھن تبديل ٿيل ڪوڊ ۾:

  • HTTP جواب لاءِ هيڊر اپڊيٽ ڪيا ويا آهن وضاحت ڪرڻ لاءِ a text/csv مواد جو قسم، ۽ فائل جو نالو ".csv" واڌارو آھي.
  • دستي طور تي CSV مواد ٺاهڻ جي بدران، اسان استعمال ڪريون ٿا fputcsv CSV لائن جي طور تي مقرر ڪيل MySQL نتيجن مان هر قطار کي ٻاھر ڪڍڻ لاءِ فنڪشن. هي فنڪشن توهان جي لاءِ CSV فارميٽنگ کي سنڀاليندو آهي، جنهن ۾ خاص ڪردارن کي هٿي ڏيڻ ۽ ضروري هجي ته ڊبل ڪوٽس ۾ فيلڊز کي بند ڪرڻ شامل آهي.
  • اسان استعمال ڪندي آئوٽ فائل هينڊل کوليو fopen 'php://output' سان فائل جو نالو. هي اسان کي اجازت ڏئي ٿو ته سڌو سنئون HTTP جوابي ٻاھرين وهڪرو ڏانهن.
  • ڪوڊ CSV ايڪسپورٽ کي موثر طريقي سان سنڀالڻ لاءِ ٺهيل آهي ۽ مڪمل ٿيڻ تي فائل هينڊل کي بند ڪري ٿو.

هي ڪوڊ MySQL ٽيبل مان ڊيٽا کي CSV فائل جي طور تي برآمد ڪندو، ان کي صارفين لاءِ کولڻ ۽ ڪم ڪرڻ آسان بڻائيندو اسپريڊ شيٽ ايپليڪيشنن جهڙوڪ Excel ۾. ڊيٽابيس جي سندن کي تبديل ڪرڻ نه وساريو پاڻ سان.

Douglas Karr

Douglas Karr جو CMO آهي OpenINSIGHTS ۽ جو باني Martech Zone. ڊگلس ڪيترن ئي ڪامياب MarTech startups جي مدد ڪئي آهي، مارٽيڪ حاصلات ۽ سيڙپڪاري ۾ 5 بلين ڊالر کان وڌيڪ جي محنت ۾ مدد ڪئي آهي، ۽ انهن جي سيلز ۽ مارڪيٽنگ جي حڪمت عملي کي لاڳو ڪرڻ ۽ خودڪار ڪرڻ ۾ ڪمپنين جي مدد ڪرڻ جاري آهي. ڊگلس هڪ بين الاقوامي طور تي تسليم ٿيل ڊجيٽل ٽرانسفارميشن ۽ مار ٽيڪ ماهر ۽ اسپيڪر آهي. ڊگلس هڪ ڊمي جي گائيڊ ۽ ڪاروباري قيادت جي ڪتاب جو شايع ٿيل ليکڪ پڻ آهي.

لاڳاپيل مقالات

مٿي تي ڪلڪ ڪري بٽڻ
بند

Adblock جو پتو لڳايو ويو

Martech Zone توهان کي هي مواد بغير ڪنهن قيمت تي مهيا ڪرڻ جي قابل آهي ڇو ته اسان اسان جي سائيٽ کي اشتهارن جي آمدني، الحاق لنڪس، ۽ اسپانسرشپ ذريعي رقم ڪريون ٿا. اسان جي تعريف ڪنداسين جيڪڏهن توهان پنهنجي اشتهار بلاڪ ڪندڙ کي هٽائي ڇڏيو جيئن توهان اسان جي سائيٽ کي ڏسو.