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 ۾. ڊيٽابيس جي سندن کي تبديل ڪرڻ نه وساريو پاڻ سان.