>  기사  >  위챗 애플릿  >  WeChat 개발을 위한 데이터베이스 운영

WeChat 개발을 위한 데이터베이스 운영

Y2J
Y2J원래의
2017-05-15 13:24:021936검색

이 글은 주로 WeChat 공개 플랫폼의 데이터베이스 운영 개발에 대한 관련 정보를 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다

1. 소개

앞서 설명한 기능들 데이터베이스를 운영하지 않고 API만 호출하면 개발이 완료됩니다. 이후 고급 기능 개발 시에는 데이터베이스를 활용해야 하므로, 이번 글에서는 독자들의 참고를 위해 MySQL 데이터베이스 운영에 대해 간략하게 소개하겠습니다.

2. 아이디어 분석

Baidu 개발자 센터는 강력한 클라우드 데이터베이스(MySQL, MongoDB, Redis 포함)를 제공합니다. 이 튜토리얼에서는 모두에게 친숙한 MySQL 데이터베이스의 작동을 시연하고 WeChat과 데이터베이스 간의 상호 작용을 실현합니다.

BAE 애플리케이션에서 클라우드 데이터베이스를 사용하는 방법은 매우 간단합니다. 데이터베이스에 연결할 때 데이터베이스 목록의 이름은 dbname입니다. 사용자 이름, 비밀번호, 연결 주소 및 포트는 애플리케이션의 환경변수를 통해 검색됩니다.

표준 PHP Mysql 또는 PHP Mysqli 확장을 사용하여 데이터베이스에 액세스할 수 있습니다. 이 두 확장은 BAE의 PHP에 이미 제공되어 있으며 애플리케이션에서 직접 사용할 수 있습니다.

3. BAE MySQL 데이터베이스

3.1 Baidu 개발자 센터에 로그인-> 클라우드 환경-> 서비스 관리-> 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 작업

데이터베이스 및 데이터 테이블 생성은 여기서 끝입니다. 다음으로 데이터베이스 및 데이터 테이블의 사용법을 자세히 설명하는 코드를 작성하겠습니다.

4. 공식 예제(PHP MySQL)

BAE에서 공식적으로 제공하는 데모(PHP MySQL) 예제는 다음과 같습니다.

mysql/basic .php 파일 내용

<!--?php
 
require_once &#39;includes/configure.php&#39;;
 
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(&#39;HTTP_BAE_ENV_ADDR_SQL_IP&#39;);
    $this->user = getenv(&#39;HTTP_BAE_ENV_AK&#39;);
    $this->password = getenv(&#39;HTTP_BAE_ENV_SK&#39;);
    $this->port = getenv(&#39;HTTP_BAE_ENV_ADDR_SQL_PORT&#39;);
 
    $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();
  }
}
?>

9. 테스트 클래스 활용

9.1 테스트 DML 작업

테스트 코드:

<!--?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(&#39;David&#39;,&#39;860510&#39;, &#39;abcabc&#39;, &#39;2013-09-27 17:14:28&#39;)";
 
//$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 작업 테스트

테스트 코드:

<!--?php
 
require_once "MySQLi_BAE.class.php";
 
$mysqli_BAE=new MySQLi_BAE();
 
//**************dql******************
$sql="select * from test_mysql";
 
$res=$mysqli_BAE--->execute_dql($sql);
 
while($row=$res->fetch_row()){
   
  foreach($row as $key=>$val){
    echo "$val--";
  }
  echo &#39;
&#39;;
}
 
$res->free();
?>

테스트 결과:

10. WeChat 연동 구현(Mysqli 확장)

10.1 사전 작업

A. MySQLi_BAE.class.php 파일 소개

//데이터베이스 함수 파일 require_once "MySQLi_BAE.class.php"를 도입합니다.

B.

객체 인스턴스화

공용 함수 구성(){ $this ->mysqli_BAE =new MySQLi_BAE();}

10.2 삽입 작업 테스트

테스트 코드:

$insert_sql="INSERT INTO test_mysql(from_user, 계정, 비밀번호, update_time) VALUES( '$fromUsername',

'$keywords[1]','$keywords[2]','$nowtime')";$res = $this->mysqli_BAE-> Execute_dml($insert_sql );

테스트 결과:

10.3 테스트 쿼리 작업

테스트 코드:

$select_sql="SELECT * FROM test_mysql WHERE from_user ='$fromUsername'";

$select_res=$this->mysqli_BAE->execute_dql($select_sql);$rows=$select_res->fetch_array(MYSQLI_ASSOC);

테스트 결과:

10.4 업데이트 작업 테스트

테스트 코드:

$update_sql="UPDATE test_mysql SET 비밀번호='$new_password' WHERE from_user='$fromUsername'";

$res = $this->mysqli_BAE->execute_dml($update_sql);

테스트 결과:

10.5 삭제 작업 테스트

테스트 코드:

$delete_sql="DELETE FROM test_mysql WHERE from_user='$fromUsername'";

$res = $this->mysqli_BAE->execute_dml($delete_sql);

테스트 결과:

WeChat과의 상호작용 테스트에 성공했습니다.

【관련 추천】

1. 특별 추천: "php Programmer Toolbox" V0.1 버전 다운로드

2. WeChat 공개 계정 플랫폼 소스 코드 다운로드

3. WeChat People King v3.4.5 Advanced Business Edition WeChat Rubik's Cube 소스 코드

위 내용은 WeChat 개발을 위한 데이터베이스 운영의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.