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

新浪云 SAE SaeMysql PHP 開發指南:連線、增刪改查、預處理與錯誤處理完整範例

     編輯:MySQL 綜合教學

前言

SaeMysql 是新浪云 SAE 環境專用的 MySQL 存取類,自動處理連線池、AppConfig 讀取,無需手動填寫主機/帳號/密碼。本文提供完整增刪改查範例與最佳實踐。

核心特性

  • 構造函數自動從環境變數讀取連線資訊。
  • 內建 escape() 防注入,支援 runSql()、getLine()、getData()。
  • 不支援標準 PDO/MySQLi 介面,遷移時需適配。

完整 CRUD 範例

<?php
$mysql = new SaeMysql();  // 自動連線

// ---------- 新增 ----------
$name = $mysql->escape($_POST['name'] ?? '');
$age  = intval($_POST['age'] ?? 0);
$sql = "INSERT INTO `user` (`name`, `age`, `regtime`) VALUES ('$name', $age, NOW())";
$mysql->runSql($sql);
if ($mysql->errno()) {
    die('新增失敗: ' . $mysql->errmsg());
}
echo '新增成功,ID: ' . $mysql->insert_id() . '<br>';

// ---------- 查詢單行 (登入驗證) ----------
$username = $mysql->escape($_POST['username'] ?? '');
$sql = "SELECT * FROM `user` WHERE `name` = '$username' LIMIT 1";
$row = $mysql->getLine($sql);
if ($row) {
    echo '用戶存在: ' . $row['name'] . '<br>';
    foreach ($row as $k => $v) echo "$k => $v<br>";
} else {
    echo '用戶不存在<br>';
}

// ---------- 查詢多行 (列表) ----------
$sql = "SELECT * FROM `user` ORDER BY `id` DESC LIMIT 10";
$data = $mysql->getData($sql);
foreach ($data as $row) {
    foreach ($row as $k => $v) echo "$k => $v<br>";
    echo '-------------------<br>';
}

// ---------- 修改 ----------
$uid = intval($_GET['id'] ?? 0);
$newName = $mysql->escape($_POST['new_name'] ?? '');
$sql = "UPDATE `user` SET `name` = '$newName' WHERE `id` = $uid";
$mysql->runSql($sql);
if ($mysql->affected_rows()) echo '修改成功<br>';

// ---------- 刪除 ----------
$sql = "DELETE FROM `user` WHERE `id` = $uid";
$mysql->runSql($sql);
if ($mysql->affected_rows()) echo '刪除成功<br>';

// 關閉連線(請求結束自動回收,可選)
$mysql->closeDb();
?>

關鍵方法速查

方法用途返回值
runSql($sql)執行 INSERT/UPDATE/DELETE/DDLbool
getLine($sql)查詢單行關聯陣列 / false
getData($sql)查詢多行二維陣列 / false
escape($str)字串轉義(防注入)安全字串
errno()錯誤代碼int (0=成功)
errmsg()錯誤訊息string
insert_id()最後自增 IDint
affected_rows()影響行數int
closeDb()釋放連線void

遷移建議:SAE → 標準環境

若專案需移出 SAE,建議封裝一個相容介面的 Wrapper 類,內部使用 PDO/MySQLi,保持業務代碼零修改:

class SaeMysqlCompat {
    private $pdo;
    public function __construct() {
        $this->pdo = new PDO('mysql:host=...;dbname=...;charset=utf8mb4', 'user', 'pass',
            [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    }
    public function runSql($sql) { return $this->pdo->exec($sql); }
    public function getLine($sql) { return $this->pdo->query($sql)->fetch(PDO::FETCH_ASSOC) ?: false; }
    public function getData($sql) { return $this->pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC) ?: false; }
    public function escape($str) { return $this->pdo->quote($str); }
    // ... 其他方法映射
}

注意事項

  1. 所有外部輸入進 SQL 前必須經過 escape()。
  2. SAE 環境下資料庫連線數有配額限制,避免長連線佔用,請求結束自動釋放。
  3. 不支援事務(BEGIN/COMMIT),如需事務請評估遷移至標準 MySQL。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved