dbname)test_mysql:CREATE TABLE IF NOT EXISTS `test_mysql` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `from_user` VARCHAR(40) DEFAULT NULL, `account` VARCHAR(40) DEFAULT NULL, `password` VARCHAR(40) DEFAULT NULL, `update_time` DATETIME DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `from_user` (`from_user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
$host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP');
$port = getenv('HTTP_BAE_ENV_ADDR_SQL_PORT');
$user = getenv('HTTP_BAE_ENV_AK');
$pwd = getenv('HTTP_BAE_ENV_SK');
$dbname = '你的數據庫名稱'; // 管理中心查看
// 連接
$link = @mysql_connect("{$host}:{$port}", $user, $pwd, true);
mysql_select_db($dbname, $link);
mysql_query("SET NAMES utf8", $link);
// CRUD 封裝
function _insert_data($sql) {
if (!mysql_query($sql)) return 0;
return mysql_affected_rows() > 0 ? 1 : 2;
}
function _update_data($sql) { /* 同 insert */ }
function _delete_data($sql) { /* 同 insert */ }
function _select_data($sql) {
return mysql_query($sql) or die(mysql_error());
}
關鍵字格式:
$keywords = explode('+', $keyword);
$fromUsername = $xmlObj->FromUserName;
$now = date('Y-m-d H:i:s');
// 判斷是否已綁定
$res = _select_data("SELECT id FROM test_mysql WHERE from_user='$fromUsername'");
$row = mysql_fetch_assoc($res);
$bound = $row['id'] ? true : false;
if ($keywords[0] === '綁定') {
if (!$bound) {
$sql = "INSERT INTO test_mysql(from_user,account,password,update_time)
VALUES('$fromUsername','{$keywords[1]}','{$keywords[2]}','$now')";
$ret = _insert_data($sql);
$contentStr = $ret==1 ? '綁定成功' : '綁定失敗';
} else $contentStr = '該賬戶已綁定';
}
elseif ($keywords[0] === '查詢') {
if ($bound) {
$row = mysql_fetch_assoc(_select_data("SELECT * FROM test_mysql WHERE from_user='$fromUsername'"));
$contentStr = "賬戶:{$row['account']}\n密碼:{$row['password']}\n更新時間:{$row['update_time']}";
} else $contentStr = '請先綁定';
}
elseif ($keywords[0] === '修改') {
$row = mysql_fetch_assoc(_select_data("SELECT * FROM test_mysql WHERE from_user='$fromUsername'"));
if ($row && $keywords[1] === $row['password']) {
$sql = "UPDATE test_mysql SET password='{$keywords[2]}' WHERE from_user='$fromUsername'";
$contentStr = _update_data($sql)==1 ? '修改成功' : '修改失敗';
} else $contentStr = '原密碼錯誤';
}
elseif ($keywords[0] === '刪除') {
$contentStr = _delete_data("DELETE FROM test_mysql WHERE from_user='$fromUsername'")==1 ? '刪除成功' : '刪除失敗';
}
class MySQLi_BAE {
private $mysqli;
public function __construct() {
$this->mysqli = new mysqli(
getenv('HTTP_BAE_ENV_ADDR_SQL_IP'),
getenv('HTTP_BAE_ENV_AK'),
getenv('HTTP_BAE_ENV_SK'),
MYSQLNAME,
getenv('HTTP_BAE_ENV_ADDR_SQL_PORT')
);
if ($this->mysqli->connect_errno) die($this->mysqli->connect_error);
$this->mysqli->query("SET NAMES utf8");
}
// DQL 查詢
public function execute_dql($sql) {
return $this->mysqli->query($sql) or die($this->mysqli->error);
}
// DML 增刪改
public function execute_dml($sql) {
$res = $this->mysqli->query($sql) or die($this->mysqli->error);
if (!$res) return 0;
return $this->mysqli->affected_rows > 0 ? 1 : 2;
}
}
使用:
$db = new MySQLi_BAE();
$res = $db->execute_dml("INSERT INTO test_mysql(...) VALUES(...)");
$stmt = $db->execute_dql("SELECT * FROM test_mysql WHERE from_user='$fromUsername'");
$row = $stmt->fetch_assoc();
mysqli_prepare/PDO::prepare)password_hash() 雜湊值,驗證用 password_verify()error_log本文完整演示了 BAE 雲平台上 MySQL 數據庫的創建、PHP 連接封裝(mysql/mysqli 兩種風格)、CRUD 操作封裝、微信公眾號文本指令解析與業務邏輯實現。核心遷移路徑:mysql 過程風格 → mysqli OO 封裝 → PDO 統一抽象 → 預處理防注入 → 密碼雜湊存儲。建議新項目直接採用 PDO + 預處理 + 異常模式,老項目逐步重構。