首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP MySQL 資料庫操作類完整實現:連線、查詢、事務與安全防護

     編輯:MySQL 資料庫相關知識

類別架構總覽

本類別 MySQL 封裝了資料庫連線管理、查詢執行、結果集處理、預處理語句建構、SQL 注入防護等核心功能,採用物件導向設計,支援長連線與短連線模式切換。

核心屬性

  • 連線參數:$server、$user、$password、$database、$character(預設 UTF8)
  • 連線模式:$linkMode(0=短連線,1=長連線 mysql_pconnect)
  • 狀態追蹤:$link_id、$query_id、$query_times、$fetchMode(MYSQL_ASSOC/MYSQL_NUM/MYSQL_BOTH)
  • 錯誤處理:$err_no、$err_msg

關鍵方法詳解

建構與連線管理

  • __construct():初始化參數並自動連線,支援自訂字符集與連線模式
  • connect():手動連線/重連,內建參數驗證、資料庫選擇、字符集設定(SET NAMES)
  • close() / __destruct():關閉非長連線,析構時自動釋放資源

查詢與結果集操作

  • query($sql):執行 SQL,記錄查詢次數,失敗觸發 halt()
  • fetchRow() / fetchAll():單行/全量獲取,支援多種獲取模式
  • getValue($field):從當前記錄取指定欄位值
  • affectedRows() / recordCount() / getquery_id() / getquery_times():統計資訊
  • getVersion():查詢 MySQL 版本號
  • getDBSize($database, $tblPrefix):計算資料庫佔用空間(含索引)

SQL 建構助手(防注入設計)

  • sqlSelect():動態建構 SELECT 語句,支援 WHERE、ORDER BY、LIMIT
  • sqlInsert($table, $row):陣列自動生成 INSERT 語句
  • sqlUpdate($table, $row, $where):陣列自動生成 UPDATE 語句
  • sqlDelete($table, $where):強制要求 WHERE 條件,防誤刪全表

安全防護機制

checkSql($sql, $type) 實現多層防禦:

  1. SELECT 專用過濾:攔截 UNION、SLEEP、BENCHMARK、LOAD_FILE、OUTFILE 等高危關鍵字
  2. 完整 SQL 掃描:處理引號包裹的字面值,避免誤判
  3. 語義級檢測:識別 UNION、註釋符(--/#//*)、危險函數、子查詢等攻擊特徵
  4. 觸發即終止腳本並輸出警示
注意:原始碼使用已棄用的 eregi/mysql_* 函數,現代專案請改用 mysqli/PDO 並採用參數化查詢。

使用範例

$db = new MySQL('localhost', 'user', 'pass', 'mydb', 'UTF8');
$db->query('SELECT * FROM users WHERE id > 10');
while ($row = $db->fetchRow()) {
    echo $row['username'];
}
$db->close();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved