考試成績、電話簿等結構化資料常以 Excel 維護。標準流程:Excel → 匯出 CSV → PHP 批次匯入資料庫。
<?php
// 1. 處理檔案上傳
$fname = $_FILES['MyFile']['name'];
$do = move_uploaded_file($_FILES['MyFile']['tmp_name'], $fname);
if ($do) { echo "檔案上傳成功<br>"; } else { echo "上傳失敗"; }
// 2. 連線資料庫(建議改用 PDO / mysqli)
$connect = mysql_connect("localhost", "username", "password") or die("無法連線資料庫");
mysql_select_db("dbname", $connect) or die(mysql_error());
// 3. 解析 CSV 並寫入
$handle = fopen($fname, "r");
while ($data = fgetcsv($handle, 10000, ",")) {
$sql = "INSERT INTO test (code, name, date) VALUES ('$data[0]','$data[1]','$data[2]')";
mysql_query($sql) or die(mysql_error());
}
fclose($handle);
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
匯入 CSV:<input name="MyFile" type="file"> <input type="submit" value="提交">
</form>
注意:原始碼使用已棄用的 mysql_* 函式,實務上請改用 PDO 或 mysqli 並採用預處理語句防止 SQL 注入。
<?php
// 設定標頭強制瀏覽器下載
$filename = date("YmdHis") . ".xls";
header("Content-Type: application/vnd.ms-excel; charset=big5");
header("Content-Disposition: attachment; filename=$filename");
// 連線與查詢
$link = mysql_connect("localhost", "root", "") or die("連線失敗");
mysql_query("SET NAMES 'gbk'");
mysql_select_db("ishop", $link);
$result = mysql_query("SELECT * FROM oi_mall_payment", $link);
// 輸出標題列
echo "資料庫:ishop, 資料表:oi_mall_payment, 備份日期:" . date("Y-m-d H:i:s") . "\n";
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result, $i) . "\t";
}
echo "\n";
// 輸出資料列
while ($row = mysql_fetch_row($result)) {
foreach ($row as $val) {
echo (isset($val) && $val !== "") ? $val . "\t" : "NULL\t";
}
echo "\n";
}
?>
輸出採 Tab (\t) 分隔,Excel 開啟時可正確識別欄位。同樣建議將資料庫操作更新為 PDO/mysqli。