위 챗 공중 플랫폼 개발 데이터베이스 조작
21226 단어 위 챗 공식 플랫폼데이터베이스 조작
앞에서 설명 한 기능 개발 은 모두 API 를 간단하게 호출 하여 이 루어 졌 으 며 데이터 베 이 스 를 조작 하지 않 았 다.다음 고급 기능 개발 에 있어 데이터 베 이 스 를 사용 해 야 하기 때문에 이 편 에서 MySQL 데이터 뱅 크 의 조작 에 대해 간단 한 소 개 를 하여 독자 들 이 참고 할 수 있 도록 하 겠 습 니 다.
2.사고 분석
바 이 두 개발 자 센터 는 강력 한 클 라 우 드 데이터 베이스(MySQL,MongoDB,Redis 포함)를 제공 합 니 다.이 튜 토리 얼 에서 저 희 는 여러분 이 비교적 잘 아 는 MySQL 데이터 베 이 스 를 조작 시연 하여 위 챗 과 데이터 베이스 의 상호작용 을 실현 할 것 입 니 다.
BAE 응용 프로그램 에서 클 라 우 드 데이터 베 이 스 를 사용 하 는 것 은 매우 간단 합 니 다.데이터베이스 목록 의 이름 은 데이터 베 이 스 를 연결 할 때의 dbname 입 니 다.사용자 이름,비밀번호,연결 주소 와 포트 는 응용 프로그램 에서 환경 변 수 를 통 해 추출 합 니 다.
표준 PHP Mysql 또는 PHP Mysqli 확장 을 사용 하여 데이터 베 이 스 를 방문 할 수 있 습 니 다.BAE 의 PHP 에 서 는 이 두 개의 확장 을 제공 합 니 다.응용 프로그램 은 직접 사용 할 수 있 습 니 다.
3.BAE MySQL 데이터베이스 만 들 기
3.1 바 이 두 개발 자 센터 에 로그 인->관리 센터->응용 프로그램 선택->클 라 우 드 환경->서비스 관리->MySQL(클 라 우 드 데이터베이스)->데이터베이스 만 들 기
3.2 데이터베이스 만 들 기
주의:모든 응용 프로그램 이 있 고 하나의 데이터 베이스 만 1G 무료 할당량 을 누 릴 수 있 으 며 나머지 데이터 베 이 스 는 무료 할당량 혜택 을 받 지 않 습 니 다.무료 할당량 을 사용 한 데이터 베 이 스 를 삭제 해 야 이 혜택 을 다시 사용 할 수 있 습 니 다.
3.3 창설 성공
데이터베이스 이름,즉 dbname 을 볼 수 있 습 니 다.나중에 사용 할 수 있 습 니 다.
"phpMyadmin"을 누 르 면 데이터 베 이 스 를 방문 합 니 다.
3.4 phpMyadmin 인터페이스
새 데이터 시트,표 이름과 필드 수 를 입력 하고'실행'을 누 르 면 표를 만 듭 니 다.
3.5 생 성 표
필드 이름과 필드 형식 을 입력 하고 입력 이 완료 되면 아래 의'저장'을 클릭 하여 표 의 생 성 을 완료 합 니 다.
3.6 창설 완료
id 필드 를 주 키 로 수정 하고 AUTO 추가INCREMENT;수정 fromuser 필드 는 유일(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 가 공식 적 으로 제공 하 는 demo(PHP MySQL)의 예 는 다음 과 같다.
mysql/basic.php 파일 내용
<!--?php
/**
* MySQL , BAE MySQL (CRUD)
*/
require_once("../configure.php");
/* ( )*/
$dbname = MYSQLNAME;
/* */
$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');
/* mysql_connect() */
$link = @mysql_connect("{$host}:{$port}",$user,$pwd,true);
if(!$link) {
die("Connect Server Failed: " . mysql_error());
}
/* mysql_select_db() */
if(!mysql_select_db($dbname,$link)) {
die("Select Database Failed: " . mysql_error($link));
}
/* , */
/*!!! , mysql_select_db !!!*/
/* , mysql_connect+mysql_select_db */
/**
* php mysql
*/
//
$sql = "create table if not exists test_mysql(
id int primary key auto_increment,
no int,
name varchar(1024),
key idx_no(no))";
$ret = mysql_query($sql, $link);
if ($ret === false) {
die("Create Table Failed: " . mysql_error($link));
} else {
echo "Create Table Succeed<br /-->";
}
//
$sql = "insert into test_mysql(no, name) values(2007,'this is a test message'),
(2008,'this is another test message'),
(2009,'xxxxxxxxxxxxxx')";
$ret = mysql_query($sql, $link);
if ($ret === false) {
die("Insert Failed: " . mysql_error($link));
} else {
echo "Insert Succeed
";
}
//
$sql = "delete from test_mysql where no = 2008";
$ret = mysql_query($sql, $link);
if ($ret === false) {
die("Delete Failed: " . mysql_error($link));
} else {
echo "Delete Succeed
";
}
//
$sql = "update test_mysql set name = 'yyyyyy' where no = 2009";
$ret = mysql_query($sql, $link);
if ($ret === false) {
die("Update Failed: " . mysql_error($link));
} else {
echo "Update Succeed
";
}
//
$sql = "select id,no,name from test_mysql";
$ret = mysql_query($sql, $link);
if ($ret === false) {
die("Select Failed: " . mysql_error($link));
} else {
echo "Select Succeed
";
while ($row = mysql_fetch_assoc($ret)) {
echo "{$row['id']} {$row['no']} {$row['name']}
";
}
}
//
$sql = "drop table if exists test_mysql";
$ret = mysql_query($sql, $link);
if ($ret === false) {
die("Drop Table Failed: " . mysql_error($link));
} else {
echo "Drop Table Succeed
";
}
?>
configure.php 파일 내용
<!--?php
/*** ***/
define("MYSQLNAME", "qzMlSkByflhScPCOFtax");
?-->
테스트 사용:실행 성공.
5.호출 가능 한 함수 형식 으로 수정(PHP MySQL)
5.1 데이터 시트 만 들 기
//
function _create_table($sql){
mysql_query($sql) or die(' , :'.mysql_error());
return " ";
}
5.2 데이터 삽입
//
function _insert_data($sql){
if(!mysql_query($sql)){
return 0; //
}else{
if(mysql_affected_rows()>0){
return 1; //
}else{
return 2; //
}
}
}
5.3 데이터 삭제
//
function _delete_data($sql){
if(!mysql_query($sql)){
return 0; //
}else{
if(mysql_affected_rows()>0){
return 1; //
}else{
return 2; //
}
}
}
5.4 데이터 수정
//
function _update_data($sql){
if(!mysql_query($sql)){
return 0; //
}else{
if(mysql_affected_rows()>0){
return 1; // ;
}else{
return 2; //
}
}
}
5.5 검색 데이터
//
function _select_data($sql){
$ret = mysql_query($sql) or die('SQL , :'.mysql_error());
return $ret;
}
5.6 데이터 시트 삭제
//
function _drop_table($sql){
mysql_query($sql) or die(' , :'.mysql_error());
return " ";
}
이상 함수 와 데이터 베 이 스 를 연결 하 는 코드 를 결합 하여 my sql 생 성bae.func.php 파일 은 아래 테스트 에 사용 할 수 있 습 니 다.6.테스트 MySQL 함수 사용
6.1 새 파일 devmysql.php 같은 디 렉 터 리 에 mysql 도입bae.func.php 파일
require_once './mysql_bae.func.php';
6.2 테스트 생 성 표
phpMyAdmin 을 사용 하여 만 든 testmy sql 표 삭제,테스트 문 구 는 다음 과 같 습 니 다.
//
$create_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`)
)";
echo _create_table($create_sql);
테스트 정확 한 결과:phpMyAdmin 에서 보기
일부러 SQL 문 구 를 잘못 썼 습 니 다.
테스트 오류 결과:
6.3 테스트 삽입 데이터
테스트 문 구 는 다음 과 같다.
//
$insert_sql = "insert into test_mysql(from_user, account, password, update_time) values('David','860510', 'abcabc', '2013-09-29 17:14:28')";
$res = _insert_data($insert_sql);
if($res == 1){
echo " ";
}else{
echo " ";
}
테스트 결과:6.4 테스트 업데이트 데이터
테스트 문 구 는 다음 과 같다.
//
$update_sql = "update test_mysql set account = 860512 where account = 860510";
$res = _update_data($update_sql);
if($res == 1){
echo " ";
}elseif($res == 0){
echo " ";
}elseif($res == 2){
echo " ";
}
테스트 결과:다시 업데이트:
6.5 테스트 데이터 삭제
테스트 문 구 는 다음 과 같다.
//
$delete_sql = "delete from test_mysql where account = 860512";
$res = _delete_data($delete_sql);
if($res == 1){
echo " ";
}elseif($res == 0){
echo " ";
}elseif($res == 2){
echo " ";
}
테스트 결과:다시 삭제:
6.6 테스트 검색 데이터
위의 삽입 작업 을 다시 실행 하여 검색 테스트 를 합 니 다.테스트 문 구 는 다음 과 같 습 니 다.
//
$select_sql = "select * from test_mysql";
$result = _select_data($select_sql);
while($rows = mysql_fetch_array($result,MYSQL_ASSOC)){
echo $rows[id]."--".$rows[from_user]."--".$rows[account]."--".$rows[password]."--".$rows[update_time];
echo "
";
}
테스트 결과:6.7 테스트 삭제 표
테스트 문 구 는 다음 과 같다.
//표 삭제$dropsql = "drop table if exists test_mysql";
echo _drop_table($drop_sql);
테스트 결과:
MySQL 함수 테스트 가 모두 성공 하 였 습 니 다.
7.위 챗 과 의 상호작용 실현(Mysql 확장)
데이터베이스 에 test 존재 보증msyql 표,여기 서 위 챗 이 MySQL 데이터베이스 에 대한 추가 삭제 와 수정 작업 을 테스트 합 니 다.특수 한 상황 을 고려 하지 않 고 아래 의 방법 으로 만 테스트 합 니 다.
1. + +
: +860512+abc123
2.
:
3. + +
: +abc123+123456
4.
:
7.1 mysql 도입bae.func.php 파일//데이터베이스 함수 파일 도입
require_once 'mysql_bae.func.php';
7.2 선행 조작
A.입력 한 문 구 를 배열 로 나 누 어'+'번호 로 구분한다.
$keywords = explode("+",$keyword);
B.현재 시간 가 져 오기
//현재 시간$nowtime=date 가 져 오기("Y-m-d G:i:s");
C.사용자 가 이미 귀속 되 었 는 지 판단
//
$select_sql="SELECT id from test_mysql WHERE from_user='$fromUsername'";
$res=_select_data($select_sql);
$rows=mysql_fetch_array($res, MYSQL_ASSOC);
if($rows[id] <> ''){
$user_flag='y';
}
7.3 테스트 삽입 작업테스트 코드:
if(trim($keywords[0] == ' ')){
if($user_flag <> 'y'){
$insert_sql="INSERT INTO test_mysql(from_user, account, password, update_time) VALUES('$fromUsername','$keywords[1]','$keywords[2]','$nowtime')";
$res = _insert_data($insert_sql);
if($res == 1){
$contentStr = " ";
}elseif($res == 0){
$contentStr = " ";
}
}else{
$contentStr = " ";
}
}
테스트 결과:7.4 테스트 조회 조작
테스트 코드:
if(trim($keywords[0] == ' ')){
$select_sql="SELECT * FROM test_mysql WHERE from_user='$fromUsername'";
$select_res=_select_data($select_sql);
$rows=mysql_fetch_assoc($select_res);
if($rows[id] <> ''){
$contentStr=" :$rows[account]
"." :$rows[password]
"."From_user:$rows[from_user]
"." :$rows[update_time]";
}else{
$contentStr=" , , , !";
}
}
테스트 결과:7.5 테스트 업데이트 작업
테스트 코드:
if(trim($keywords[0] == " ")){
$old_password=$keywords[1];
$new_password=$keywords[2];
$select_password_sql="SELECT * FROM test_mysql WHERE from_user='$fromUsername'";
$select_res=_select_data($select_password_sql);
$rows=mysql_fetch_assoc($select_res);
if($old_password == $rows[password]){
$update_sql="UPDATE test_mysql SET password='$new_password' WHERE from_user='$fromUsername'";
$res = _update_data($update_sql);
if($res == 1){
$contentStr = " ";
}elseif($res == 0){
$contentStr = " ";
}
}else{
$contentStr = " , ";
}
}
테스트 결과:7.6 테스트 삭제 작업
테스트 코드:
if(trim($keywords[0] == " ")){
$delete_sql="DELETE FROM test_mysql WHERE from_user='$fromUsername'";
$res = _delete_data($delete_sql);
if($res == 1){
$contentStr = " ";
}elseif($res == 0){
$contentStr = " ";
}
}
테스트 결과:위 챗 과 의 대화 테스트 성공.
8.PHP Mysqli 확장,클래스 로 패키지
Mysqli 확장 을 클래스 로 봉 하여 사용 합 니 다.코드 는 다음 과 같 습 니 다.
<!--?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();
}
}
?>
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('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 조작
테스트 코드:
<!--?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 '
';
}
$res->free();
?>
테스트 결과:10.위 챗 과 의 상호작용 실현(Mysqli 확장)
10.1 선행 조작
A.MySQLi 도입BAE.class.php 파일
//데이터베이스 함수 파일 도입 requireonce "MySQLi_BAE.class.php";
B.실례 화 대상
public function __construct(){ $this->mysqli_BAE=new MySQLi_BAE();}
10.2 테스트 삽입 작업
테스트 코드:
$insert_sql="INSERT INTO test_mysql(from_user, account, password, 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 password='$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);
테스트 결과:
위 챗 과 의 대화 테스트 성공.
11.전체 코드 획득
방문 해 주세요. 즐기다 공식 포럼
URL:http://pan.baidu.com/s/1c0s3Jby
관심
주목 해 주세요. 장쑤 성 위 챗 공식 계 정,탁 금 소주 BAE 플랫폼 개발 을 바탕 으로 주류 의 위 챗 기능 에 대한 개발 테스트 를 실시한다.
주목 하 셔 도 됩 니 다. 장쑤 성 공공 계 정 은 기능 테스트 를 하고 새로운 응용 개발 을 얻 습 니 다.
1.위 챗 클 라 이언 트 로그 인,주소록->친구 추가->공중 번호 찾기-> zhuojinsz,찾 고 주목 합 니 다.
2.QR 코드 스 캔:
장쑤 성 기능 목록:
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!