首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

十天精通 PHP 系列:第六天——資料庫 CRUD 核心操作實戰

     編輯:PHP 綜合知識

學習目標

掌握 PHP 操作 MySQL 實現數據的增(Create)、刪(Delete)、改(Update)核心邏輯,理解表單數據接收與 SQL 語句構建的關鍵細節,建立安全調試習慣。

核心執行函數

所有寫操作統一由 mysql_query($sql) 執行,區別僅在於 SQL 語句結構:

// 新增
$exec = "INSERT INTO tablename (item1, item2) VALUES ('".$_POST['item1']."', '".$_POST['item2']."')";

// 刪除
$exec = "DELETE FROM tablename WHERE id = ".$_POST['id'];

// 修改
$exec = "UPDATE tablename SET item1 = '".$_POST['item1']."' WHERE id = ".$_POST['id'];

mysql_query($exec);

表單數據接收機制

表單 methodPHP 獲取方式超全局數組
POST`$_POST['field_name']`推薦,數據不顯示在 URL,無長度限制
GET`$_GET['field_name']`適用於查詢、分頁、可收藏鏈接
<input name="item1" type="text" id="item1">
// POST 提交 → $_POST['item1']
// GET  提交 → $_GET['item1']

SQL 語句構建常見陷阱與調試三板斧

高發錯誤類型

  1. 字符串字段未用引號包裹:`VALUES (".$_POST['name'].")` → 應為 `VALUES ('".$_POST['name']."')`
  2. 連接符 `.` 遺漏或多加
  3. 保留字作為欄位名未加反引號(如 `date`、`order`、`key`)
  4. 變量名拼寫錯誤導致空值注入 SQL

調試三步法(必會)

// 1. 註釋執行,輸出 SQL 檢查結構
// mysql_query($exec);
echo $exec; exit;

// 2. 複制輸出的 SQL 到 phpMyAdmin 執行,觀察具體報錯

// 3. 確認無誤後恢復執行代碼

命名規範的工程價值

  • 欄位名:蛇形 `user_name`、`created_at`,避開保留字
  • 變量名:駝峰 `$userName`、`$createdAt`,語義清晰
  • 統一規範 = 降低認知負荷 + 減少拼寫錯誤 + 利於團隊協作

安全警示:這是教學代碼,生產環境嚴禁直接使用!

⚠ SQL 注入極高風險
代碼直接拼接 `$_POST` 變量進 SQL,攻擊者可構造 `item1 = ' OR '1'='1` 繞過驗證、刪庫、竊取數據。

生產環境必須採用預處理語句:
$stmt = $pdo->prepare("INSERT INTO tablename (item1, item2) VALUES (?, ?)");
$stmt->execute([$_POST['item1'], $_POST['item2']]);

明天預告

第七天講解 Session 機制:原理、配置、登錄狀態維持、購物車實現、安全加固(防固定、防劫持)。

延伸練習

  1. 編寫一個通用的 `executeDML($sql, $params)` 函數封裝 PDO 預處理
  2. 實現「軟刪除」邏輯:增加 `deleted_at` 欄位而非真 `DELETE`
  3. 為修改操作添加「樂觀鎖」:`UPDATE ... SET ..., version = version + 1 WHERE id = ? AND version = ?`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved