參考 ASP ADO Recordset 模式設計的 PHP MySQL 操作類,提供 Query/GetValue 查詢模式與 AddNew/SetValue/Update 寫入模式,降低業務代碼與 SQL 耦合度。
| 操作類型 | 方法鏈 | 說明 |
|---|---|---|
| 查詢 | Query() → MoveNext()/MoveTo() → GetValue() | 游標式逐行讀取,支持字段名/索引取值 |
| 新增 | AddNew() → SetValue()×N → Update() | 字段級賦值,自動構建 INSERT |
| 編輯 | Edit(condition) → SetValue()×N → Update() | 條件定位記錄,自動構建 UPDATE |
| 直接執行 | Execute(sql) | 任意 SQL 直通執行 |
var $host="localhost", $user="boot", $password="oaserver";
var $linkid, $dbid; // 連接/選庫資源
var $sTName; // 當前操作表名
var $nErr=0, $sErr=""; // 錯誤狀態與信息
var $nResult, $aFName, $nRows, $nCols; // 結果集元數據
var $aNew, $NewEdit=0, $sEditCon; // 寫入緩衝區與狀態
var $sName="", $sValue="#@!", $sEdit="#@!"; // SQL 片段緩衝
$ftype = @mysql_field_type($this->nResult, $i);
switch($ftype) {
case "string": case "date": case "datetime":
$this->sValue .= '"'.$this->aNew[$tmpIn].'"';
break;
case "int": case "unknown":
$this->sValue .= $this->aNew[$tmpIn];
break;
default:
$this->nErr=1; // 不支持類型報錯
}
自動根據字段類型加引號/轉義,減少手寫 SQL 的語法錯誤。
INSERT INTO table (fields) VALUES (values)UPDATE table SET field=value,... WHERE conditionfunction Destroy() {
mysql_query("commit");
mysql_close();
}
析構時自動提交事務並關閉連接。
$db = new MySQLDB("users", "mydb");
// 查詢
$db->Query("", "*", "status=1", "id DESC", "LIMIT 10");
while(!$db->EOF) {
echo $db->GetValue("username");
$db->MoveNext();
}
// 新增
$db->AddNew("users");
$db->SetValue("username", "zhangsan");
$db->SetValue("email", "zhangsan@example.com");
$db->Update();
// 編輯
$db->Edit("id=5", "users");
$db->SetValue("status", 0);
$db->Update();
⚠️ 重要:代碼基於已棄用的
mysql_*擴展(PHP 5.5 棄用,7.0 移除)。生產環境必須遷移至 PDO 或 mysqli,並引入預處理語句防注入。
new PDO("mysql:host=...;dbname=...", $user, $pass)$stmt = $pdo->prepare("SELECT * FROM users WHERE status=?"); $stmt->execute([1]);prepare() + execute(),綁定參數PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION