這篇文章主要介紹了微信公眾平台開發資料庫操作的相關資料,需要的朋友可以參考下
一、簡介
前面講解的功能開發都是簡單的呼叫API 完成的,沒有對資料庫進行操作。在接下來的進階功能開發中,需要使用到資料庫,所以在這篇中,將對MySQL 資料庫的操作做一下簡單的介紹,以供讀者參考。
二、思路分析
百度開發者中心提供了強大的雲端資料庫(包括MySQL, MongoDB, Redis),在這一節教學中,我們將對大家比較熟悉的MySQL 資料庫進行操作演示,實現微信與資料庫的交互。
在BAE應用程式中使用雲端資料庫十分簡單,資料庫清單中的名稱即是連接資料庫時的dbname。使用者名稱、密碼、連接位址和連接埠在應用程式中透過環境變數取出。
可使用標準的PHP Mysql 或PHP Mysqli 擴充存取資料庫,BAE的PHP中已提供這兩個擴展,應用可直接使用。
三、建立BAE MySQL資料庫
#3.1 登陸百度開發者中心-> 管理中心-> 選擇應用程式-> 雲環境->服務管理-> MySQL(雲端資料庫) -> 建立資料庫
3.2 建立資料庫
#注意:每個應用程式有且只有一個資料庫享有1G免費配額,其餘資料庫皆不享有免費配額優惠。只有將已使用免費配額的資料庫刪除,才能再次使用此優惠。
3.3 建立成功
在這裡可以看到資料庫的名稱,也就是dbname,後面會被使用到。
點選 “phpMyadmin” 存取資料庫。
3.4 phpMyadmin介面
新資料表,輸入表名及欄位數,點選 「執行」 建立表格。
3.5 建立表格
輸入欄位名稱及欄位類型,輸入完畢後,點選下方的「儲存」,完成表格的建立。
3.6 建立完成
修改id 欄位為主鍵並新增AUTO_INCREMENT;修改from_user 欄位為唯一(UNIQUE),完成表格的修改。
建表作業也可以使用下列SQL語句完成:
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`));
phpMyAdmin 操作
資料庫及資料表的建立到此結束,以下將編寫程式碼對資料庫及資料表的使用做詳細講解。
四、官方範例(PHP MySQL)
BAE 官方提供的demo(PHP MySQL)範例如下:
mysql/basic.php 文件內容
<!--?php require_once 'includes/configure.php'; class MySQLi_BAE{ private $mysqli; private $host; private $user; private $password; private $port; private $database; //在类之外访问私有变量时使用 function get($property_name){ if(isset($this--->$property_name)){ return($this->$property_name); }else{ return(NULL); } } function set($property_name, $value){ $this->$property_name=$value; } function construct(){ /*从平台获取查询要连接的数据库名称*/ $this->database = MYSQLNAME; /*从环境变量里取出数据库连接需要的参数*/ $this->host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP'); $this->user = getenv('HTTP_BAE_ENV_AK'); $this->password = getenv('HTTP_BAE_ENV_SK'); $this->port = getenv('HTTP_BAE_ENV_ADDR_SQL_PORT'); $this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->database, $this->port); if($this->mysqli->connect_error){ die("Connect Server Failed:".$this->mysqli->error); } $this->mysqli->query("set names utf8"); } //dql statement function execute_dql($query){ $res = $this->mysqli->query($query) or die("操作失败".$this->mysqli->error); return $res; //$this->mysqli->close(); } //dml statement function execute_dml($query){ $res = $this->mysqli->query($query) or die("操作失败".$this->mysqli->error); if(!$res){ return 0;//失败 }else{ if($this->mysqli->affected_rows > 0){ return 1;//执行成功 }else{ return 2;//没有行受影响 } } //$this->mysqli->close(); } } ?>
測試程式碼:
<!--?php require_once "MySQLi_BAE.class.php"; $mysqli_BAE=new MySQLi_BAE(); //**************dml******************* $sql="insert into test_mysql (from_user, account, password, update_time) values('David','860510', 'abcabc', '2013-09-27 17:14:28')"; //$sql="update test_mysql set account = 860512 where account = 860510"; //$sql="delete from test_mysql where account = 860512"; $res=$mysqli_BAE--->execute_dml($sql); if($res==0){ echo "执行失败"; }elseif($res==1){ echo "执行成功"; }else{ echo "没有行数影响"; } ?>
9.2 測試DQL運算