本類別 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):計算資料庫佔用空間(含索引)sqlSelect():動態建構 SELECT 語句,支援 WHERE、ORDER BY、LIMITsqlInsert($table, $row):陣列自動生成 INSERT 語句sqlUpdate($table, $row, $where):陣列自動生成 UPDATE 語句sqlDelete($table, $where):強制要求 WHERE 條件,防誤刪全表checkSql($sql, $type) 實現多層防禦:
UNION、SLEEP、BENCHMARK、LOAD_FILE、OUTFILE 等高危關鍵字UNION、註釋符(--/#//*)、危險函數、子查詢等攻擊特徵注意:原始碼使用已棄用的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();