在 PHP 網頁開發中,資料庫操作是核心技能之一。INSERT INTO 敘述用於向資料表新增記錄,是最基礎也最常用的 SQL 指令。本文將從語法說明、PHP 實作範例、表單資料寫入三個層面,完整解析資料新增的實務操作。
標準寫法為指定所有欄位值,順序必須與資料表定義一致:
INSERT INTO table_name VALUES (value1, value2, ...);
實務上建議明確指定欄位名稱,提升可讀性並避免結構變更導致錯誤:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
提醒:SQL 指令不分大小寫,INSERT INTO與insert into效果相同。
早期教學常使用 mysql_query() 函數,但該擴展已於 PHP 7.0 移除。現代專案請改用 PDO 或 mysqli,並搭配預處理語句防範 SQL 注入。
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO Persons (FirstName, LastName, Age) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['Peter', 'Griffin', 35]);
$stmt->execute(['Glenn', 'Quagmire', 33]);
echo "新增成功,影響列數:" . $stmt->rowCount();
} catch (PDOException $e) {
die("錯誤:" . $e->getMessage());
}
?>
實際專案中,資料多來自前端表單。以下示範完整流程:
<form action="insert.php" method="post"> <label>姓氏:<input type="text" name="firstname" required></label><br> <label>名字:<input type="text" name="lastname" required></label><br> <label>年齡:<input type="number" name="age" min="1" max="120" required></label><br> <button type="submit">送出</button> </form>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 取得並過濾輸入
$firstname = trim($_POST['firstname'] ?? '');
$lastname = trim($_POST['lastname'] ?? '');
$age = (int)($_POST['age'] ?? 0);
// 簡單驗證
if ($firstname === '' || $lastname === '' || $age <= 0) {
die('請填寫完整且正確的資料');
}
$sql = "INSERT INTO Persons (FirstName, LastName, Age) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$firstname, $lastname, $age]);
echo "1 筆記錄已新增(ID: " . $pdo->lastInsertId() . ")";
} catch (PDOException $e) {
// 正式環境請記錄錯誤而非直接顯示
die('資料庫錯誤:' . $e->getMessage());
}
?>
掌握 INSERT INTO 操作是 PHP 後端開發的入門基石,建議搭配交易(Transaction)機制,於批量寫入或關聯資料操作時確保資料一致性。