完整展示如何從資料列表點選修改、進入編輯頁面、提交更新資料庫。
<?php
$link = mysql_connect("localhost", "root", "密碼");
mysql_select_db("infosystem", $link);
$q = "SELECT * FROM info";
mysql_query("SET NAMES GB2312");
$rs = mysql_query($q, $link);
echo "";
echo "部門 姓名 PC名稱 操作 ";
while ($row = mysql_fetch_row($rs)) {
echo "";
echo "修改 ";
echo "$row[1] $row[2] $row[3] ";
echo " ";
}
echo "
";
?>
<?php
$link = mysql_connect("localhost", "root", "密碼");
mysql_select_db("infosystem", $link);
$del_id = $_GET["id"];
$q = "SELECT * FROM info WHERE id=$del_id";
mysql_query("SET NAMES GB2312");
$rs = mysql_query($q, $link);
?>
<html><body>
<form action="modify_finish.php" method="POST">
<?php
echo "";
while ($row = mysql_fetch_object($rs)) {
echo "";
}
mysql_close($link);
?>
<input type="submit" value="提交">
</form>
</body></html>
<?php
$link = mysql_connect("localhost", "root", "密碼");
mysql_select_db("infosystem", $link);
mysql_query("SET NAMES GB2312");
$exec = "UPDATE info SET ename='" . $_POST['ename'] . "' WHERE id=" . $_POST['id'];
mysql_query($exec, $link);
echo "修改成功!";
mysql_close($link);
?>
上述範例直接拼接 $_POST 變數,**極度危險**,存在 SQL 注入漏洞。
<?php
// modify_finish.php - 安全版
$pdo = new PDO("mysql:host=localhost;dbname=infosystem;charset=utf8", "root", "密碼");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$id = filter_input(INPUT_POST, 'id', FILTER_VALIDATE_INT);
$ename = filter_input(INPUT_POST, 'ename', FILTER_SANITIZE_STRING);
if ($id === false || !$ename) {
die("參數錯誤");
}
$stmt = $pdo->prepare("UPDATE info SET ename = ? WHERE id = ?");
$stmt->execute([$ename, $id]);
echo "修改成功! (影響行數: " . $stmt->rowCount() . ")";
?>
view.php (列表) │ ├─ 點選「修改」 → 傳遞 id 參數 ▼ modify_do.php (編輯表單) │ ├─ 顯示當前資料於 input value ├─ 使用者修改後按「提交」 → POST 送出 ▼ modify_finish.php (處理更新) │ ├─ 驗證、過濾輸入 ├─ 執行 UPDATE 預處理語句 └─ 回饋結果
掌握此流程,可應用於所有「查詢→編輯→更新」的後台管理功能。