微信小程序的js后臺(tái)只能執(zhí)行一些簡(jiǎn)單的邏輯,遇到比較復(fù)雜的處理表單數(shù)據(jù)的功能或者網(wǎng)絡(luò)功能就需要連接服務(wù)器來(lái)遠(yuǎn)程處理,實(shí)現(xiàn)方式就是調(diào)用小程序的 wx.request() 這一接口。
目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、屯溪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
request請(qǐng)求 就是基本的HTTP請(qǐng)求,可以攜帶一些表單數(shù)據(jù),交給服務(wù)器處理。
在小程序中的寫(xiě)法如下:
采用php作為服務(wù)器端語(yǔ)言,通過(guò)WAMP等框架可以很容易地搭建環(huán)境,服務(wù)器主要完成對(duì)請(qǐng)求數(shù)據(jù)的處理以及結(jié)果數(shù)據(jù)的返回。
請(qǐng)求數(shù)據(jù)的獲取非常容易,直接訪(fǎng)問(wèn)相應(yīng)的超全局?jǐn)?shù)組,對(duì)于GET方法而言,通過(guò)下面的方式即可:
為了方便小程序端數(shù)據(jù)的處理,結(jié)果數(shù)據(jù)仍通過(guò)json格式返回,具體在php中的簡(jiǎn)單做法就是
這樣返回的json數(shù)據(jù)就為
其中value1,value2等變量可以設(shè)置為多維數(shù)組,這樣通過(guò)json_encode() 函數(shù)之后就可以得到相應(yīng)的嵌套的json數(shù)據(jù),從而方便處理。
通過(guò)php可以很容易地處理微信小程序的request請(qǐng)求,筆者是由于前一段時(shí)間需要進(jìn)行微信小程序的開(kāi)發(fā),就研究了一下小程序的邏輯,然后嘗試用php進(jìn)行服務(wù)端處理,對(duì)于簡(jiǎn)單的請(qǐng)求處理起來(lái)覺(jué)得還不錯(cuò),這篇文章可以作為初次接觸微信小程序的一個(gè)參考。
PHP5字符串處理函數(shù)
addcslashes — 為字符串里面的部分字符添加反斜線(xiàn)轉(zhuǎn)義字符
addslashes — 用指定的方式對(duì)字符串里面的字符進(jìn)行轉(zhuǎn)義
bin2hex — 將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制表示
chop — rtrim() 的別名函數(shù)
chr — 返回一個(gè)字符的ASCII碼
chunk_split — 按一定的字符長(zhǎng)度將字符串分割成小塊
convert_cyr_string — 將斯拉夫語(yǔ)字符轉(zhuǎn)換為別的字符
convert_uudecode — 解密一個(gè)字符串
convert_uuencode — 加密一個(gè)字符串
count_chars — 返回一個(gè)字符串里面的字符使用信息
crc32 — 計(jì)算一個(gè)字符串的crc32多項(xiàng)式
crypt — 單向散列加密函數(shù)
echo — 用以顯示一些內(nèi)容
explode — 將一個(gè)字符串用分割符轉(zhuǎn)變?yōu)橐粩?shù)組形式
fprintf — 按照要求對(duì)數(shù)據(jù)進(jìn)行返回,并直接寫(xiě)入文檔流
get_html_translation_table — 返回可以轉(zhuǎn)換的HTML實(shí)體
hebrev — 將Hebrew編碼的字符串轉(zhuǎn)換為可視的文本
hebrevc — 將Hebrew編碼的字符串轉(zhuǎn)換為可視的文本
html_entity_decode — htmlentities ()函數(shù)的反函數(shù),將HTML實(shí)體轉(zhuǎn)換為字符
htmlentities — 將字符串中一些字符轉(zhuǎn)換為HTML實(shí)體
htmlspecialchars_decode — htmlspecialchars()函數(shù)的反函數(shù),將HTML實(shí)體轉(zhuǎn)換為字符
htmlspecialchars — 將字符串中一些字符轉(zhuǎn)換為HTML實(shí)體
implode — 將數(shù)組用特定的分割符轉(zhuǎn)變?yōu)樽址?/p>
join — 將數(shù)組轉(zhuǎn)變?yōu)樽址?,implode()函數(shù)的別名
levenshtein — 計(jì)算兩個(gè)詞的差別大小
localeconv — 獲取數(shù)字相關(guān)的格式定義
ltrim — 去除字符串左側(cè)的空白或者指定的字符
md5_file — 將一個(gè)文件進(jìn)行MD5算法加密
md5 — 將一個(gè)字符串進(jìn)行MD5算法加密
metaphone — 判斷一個(gè)字符串的發(fā)音規(guī)則
money_format — 按照參數(shù)對(duì)數(shù)字進(jìn)行格式化的輸出
nl_langinfo — 查詢(xún)語(yǔ)言和本地信息
nl2br — 將字符串中的換行符“n”替換成“
”
number_format — 按照參數(shù)對(duì)數(shù)字進(jìn)行格式化的輸出
ord — 將一個(gè)ASCII碼轉(zhuǎn)換為一個(gè)字符
parse_str — 把一定格式的字符串轉(zhuǎn)變?yōu)樽兞亢椭?/p>
print — 用以輸出一個(gè)單獨(dú)的值
printf — 按照要求對(duì)數(shù)據(jù)進(jìn)行顯示
quoted_printable_decode — 將一個(gè)字符串加密為一個(gè)8位的二進(jìn)制字符串
quotemeta — 對(duì)若干個(gè)特定字符進(jìn)行轉(zhuǎn)義
rtrim — 去除字符串右側(cè)的空白或者指定的字符
setlocale — 設(shè)置關(guān)于數(shù)字,日期等等的本地格式
sha1_file — 將一個(gè)文件進(jìn)行SHA1算法加密
sha1 — 將一個(gè)字符串進(jìn)行SHA1算法加密
similar_text — 比較兩個(gè)字符串,返回系統(tǒng)認(rèn)為的相似字符個(gè)數(shù)
soundex — 判斷一個(gè)字符串的發(fā)音規(guī)則
sprintf — 按照要求對(duì)數(shù)據(jù)進(jìn)行返回,但是不輸出
sscanf — 可以對(duì)字符串進(jìn)行格式化
str_ireplace — 像str_replace()函數(shù)一樣匹配和替換字符串,但是不區(qū)分大小寫(xiě)
str_pad — 對(duì)字符串進(jìn)行兩側(cè)的補(bǔ)白
str_repeat — 對(duì)字符串進(jìn)行重復(fù)組合
str_replace — 匹配和替換字符串
str_rot13 — 將字符串進(jìn)行ROT13加密處理
str_shuffle — 對(duì)一個(gè)字符串里面的字符進(jìn)行隨機(jī)排序
str_split — 將一個(gè)字符串按照字符間距分割為一個(gè)數(shù)組
str_word_count — 獲取字符串里面的英文單詞信息
strcasecmp — 對(duì)字符串進(jìn)行大小比較,不區(qū)分大小寫(xiě)
strchr — 通過(guò)比較返回一個(gè)字符串的部分strstr()函數(shù)的別名
strcmp — 對(duì)字符串進(jìn)行大小比較
strcoll – 根據(jù)本地設(shè)置對(duì)字符串進(jìn)行大小比較
strcspn — 返回字符連續(xù)非匹配長(zhǎng)度的值
strip_tags — 去除一個(gè)字符串里面的HTML和PHP代碼
stripcslashes — 反轉(zhuǎn)義addcslashes()函數(shù)轉(zhuǎn)義處理過(guò)的字符串
stripos — 查找并返回首個(gè)匹配項(xiàng)的位置,匹配不區(qū)分大小寫(xiě)
stripslashes — 反轉(zhuǎn)義addslashes()函數(shù)轉(zhuǎn)義處理過(guò)的字符串
stristr — 通過(guò)比較返回一個(gè)字符串的部分,比較時(shí)不區(qū)分大小寫(xiě)
strlen — 獲取一個(gè)字符串的編碼長(zhǎng)度
strnatcasecmp — 使用自然排序法對(duì)字符串進(jìn)行大小比較,不區(qū)分大小寫(xiě)
strnatcmp — 使用自然排序法對(duì)字符串進(jìn)行大小比較
strncasecmp — 對(duì)字符串的前N個(gè)字符進(jìn)行大小比較,不區(qū)分大小寫(xiě)
strncmp — 對(duì)字符串的前N個(gè)字符進(jìn)行大小比較
strpbrk — 通過(guò)比較返回一個(gè)字符串的部分
strpos — 查找并返回首個(gè)匹配項(xiàng)的位置
strrchr — 通過(guò)從后往前比較返回一個(gè)字符串的.部分
strrev — 將字符串里面的所有字母反向排列
strripos — 從后往前查找并返回首個(gè)匹配項(xiàng)的位置,匹配不區(qū)分大小寫(xiě)
strrpos – 從后往前查找并返回首個(gè)匹配項(xiàng)的位置
strspn — 匹配并返回字符連續(xù)出現(xiàn)長(zhǎng)度的值
strstr — 通過(guò)比較返回一個(gè)字符串的部分
strtok — 用指定的若干個(gè)字符來(lái)分割字符串
strtolower — 將字符串轉(zhuǎn)變?yōu)樾?xiě)
strtoupper –將字符串轉(zhuǎn)變?yōu)榇髮?xiě)
strtr — 對(duì)字符串比較替換
substr_compare — 對(duì)字符串進(jìn)行截取后的比較
substr_count — 計(jì)算字符串中某字符段的出現(xiàn)次數(shù)
substr_replace — 對(duì)字符串中的部分字符進(jìn)行替換
substr — 對(duì)字符串進(jìn)行截取
trim — 去除字符串兩邊的空白或者指定的字符
ucfirst — 將所給字符串的第一個(gè)字母轉(zhuǎn)換為大寫(xiě)
ucwords — 將所給字符串的每一個(gè)英文單詞的第一個(gè)字母變成大寫(xiě)
vfprintf — 按照要求對(duì)數(shù)據(jù)進(jìn)行返回,并直接寫(xiě)入文檔流
vprintf — 按照要求對(duì)數(shù)據(jù)進(jìn)行顯示
vsprintf — 按照要求對(duì)數(shù)據(jù)進(jìn)行返回,但是不輸出
wordwrap — 按照一定的字符長(zhǎng)度分割字符串
strtolower()函數(shù)把所有字符變成小寫(xiě),strtoupper()函數(shù)把所有字符變成大寫(xiě),ucfirst()函數(shù)將所給字符串的第一個(gè)字母轉(zhuǎn)換為大寫(xiě),ucwords()函數(shù)將所給字符串的每一個(gè)英文單詞的第一個(gè)字母變成大寫(xiě)。ucfirst()只處理字符串的首個(gè)字符,ucwords()只處理每個(gè)單詞的首字母(以空格來(lái)界定是否是單詞,“today!Hi”、“today.Hi” 會(huì)被認(rèn)為是一個(gè)單詞),對(duì)于其余字母的大小寫(xiě)狀態(tài)并不改變。 ;
php處理數(shù)據(jù)時(shí)會(huì)有一個(gè)等待時(shí)間,就是所說(shuō)的超時(shí)時(shí)間,而且如果使用mysql的話(huà),它也有一個(gè)超時(shí)時(shí)間,運(yùn)行一串代碼時(shí)間如果超過(guò)配置文件的時(shí)間,會(huì)被中斷不運(yùn)行。第一種你可以修改php配置文件timeout的運(yùn)行時(shí)間,第二你可以分批處理大量數(shù)據(jù),注意是分批處理,就OK了。
create databases handle;
create table user(
id int unsigned not null auto_increment primary key,
name varchar(8),
sex tinyint(1) default '1',
score int not null,
state tinyint(1)
);
2.向表中添加數(shù)據(jù)(不示例)
3.創(chuàng)建index.html客戶(hù)端,a.php服務(wù)端1,b.php服務(wù)端2
Index.html:
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
title客戶(hù)端/title
/head
body
button onclick="send('a.php?state=0')"開(kāi)始請(qǐng)求/button
div style="position: fixed;width: 500px;height: 300px;top: 100px;background: gray"
span style="color: white;font-size: 20px;"/span
/div
script type="text/javascript" src="./jquery-1.10.2.min.js"/script
script type="text/javascript"
//創(chuàng)建一個(gè)模態(tài)框
function display(value){
$('span').html(value);
}
//ajax
function send(dizhi){
$.ajax({
type: "get",
url: dizhi,
success: function(msg){
var arr=JSON.parse(msg);
console.log(arr);
//alert(arr.value);
var tishi="已經(jīng)處理 "+arr.now +"個(gè),共"+arr.all+"個(gè)";
display(tishi);
if(arr.now!=arr.all){
send("a.php?now="+arr.now+"all="+arr.all);
}else{
alert("完成!");
}
}
});
}
/script
/body
/html
a.php:
?php
require('./dbconfig.php');
$link=mysql_connect(HOST,USER,PASS) or die('數(shù)據(jù)庫(kù)鏈接失敗');
mysql_select_db(DBNAME);
/*
查詢(xún)數(shù)據(jù)
$sql="select * from user";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
var_dump($row);
*/
/*
循環(huán)插入
for($i=3;$i=100;$i++){
$sql= "insert into user(name,score,state) values('z".$i."',".$i.",1)";
mysql_query($sql);
}
*/
/*查詢(xún)需要處理的數(shù)據(jù)總數(shù)*/
//isset($_GET['state'])?$_GET['state']:0;
if(isset($_GET['state'])){
$sql="select count(*) from user";
$result=mysql_query($sql);
$all=mysql_result($result,0);
$now=0;
header("Location: b.php?all={$all}now=0");
}else{
header("Location: b.php?all={$_GET['all']}now={$_GET['now']}");
}
/*返回當(dāng)前處理的數(shù)據(jù)*/
b.php:
?php
require('./dbconfig.php');
$link=mysql_connect(HOST,USER,PASS) or die('數(shù)據(jù)庫(kù)鏈接失敗');
mysql_select_db(DBNAME);
/*返回當(dāng)前處理的數(shù)據(jù)*/
//$id=$_GET['id'];//獲取將要處理的id
$now=$_GET['now'];//已經(jīng)處理的個(gè)數(shù)
$all=$_GET['all'];//總共要處理的個(gè)數(shù)
$sql="select score from user limit {$now},1";
$result=mysql_query($sql);
$value=mysql_result($result, 0);
$now++;
$arr=array(
'now'=$now,
'all'=$all,
'value'=$value
);
//print_r($arr);
echo json_encode($arr);
dbconfig.php:
?php
define('HOST','127.0.0.1');
define('USER', 'root');
define('PASS','root');
define('DBNAME','handle');
1、如果服務(wù)器允許mysqldump 并且沒(méi)有禁止PHP的shell_exec()這個(gè)函數(shù)的話(huà)
直接在PHP里面執(zhí)行mysqldump就可以了。
2、通過(guò)mysql_query('show tables')的返回值遍歷每個(gè)表,循環(huán)對(duì)每個(gè)表使用查詢(xún)語(yǔ)句
select * into outfile '路徑/文件名' from 表名
缺點(diǎn)是這樣得到的是純數(shù)據(jù),恢復(fù)數(shù)據(jù)的時(shí)候你需要額外再寫(xiě)腳本
3、同樣通過(guò)show tables返回表名,遍歷每個(gè)表,通過(guò)select 語(yǔ)句查詢(xún),然后逐條結(jié)果處理,比如手工添加drop table 和create table 以及insert into等等,然后再寫(xiě)入文件。這樣得到的備份數(shù)據(jù)是比較接近mysqldump的結(jié)果的,各種工具都可以用來(lái)恢復(fù)數(shù)據(jù)。缺點(diǎn)是如果數(shù)據(jù)庫(kù)太大的話(huà),效率不好說(shuō)
舉例如下:
創(chuàng)建userinfo_update.php頁(yè)面用于查詢(xún)用戶(hù)信息,先顯示信息,在修改:
先通過(guò)GET獲取用戶(hù)編號(hào)查詢(xún)用戶(hù)信息:
$sql = "select * from user_info where user_id='".$_GET['userId']."'";
$result = mysql_query($sql,$con);
if($row = mysql_fetch_array($result)){
}
頁(yè)面效果:
創(chuàng)建update.php文件,用于修改用戶(hù)信息:
使用到了mysql_affected_rows() 函數(shù)返回前一次 MySQL 操作所影響的記錄行數(shù)。
//通過(guò)post獲取頁(yè)面提交數(shù)據(jù)信息
$userId = $_POST[userId];
$userName = $_POST[userName];
$userAge = $_POST[userAge];
$sql = "update user_info set user_name='".$userName."',user_age=".$userAge." where user_id='".$userId."'";
mysql_query($sql,$conn);//執(zhí)行SQL
$mark? = mysql_affected_rows();//返回影響行數(shù)
$url = "userinf_select.php";
運(yùn)行結(jié)果
創(chuàng)建delete.php文件,完成刪除用戶(hù)信息功能:
$userId = $_GET['userId'];
include 'connection.php';
$sql = "delete from user_info where user_id='".$userId."'";
mysql_query($sql,$con);
$mark? = mysql_affected_rows();//返回影響行數(shù)
if($mark0){
echo "刪除成功";
}else{
echo? "刪除失敗";
}
mysql_close($con);
運(yùn)行結(jié)果:
網(wǎng)頁(yè)名稱(chēng):用php處理數(shù)據(jù) php做數(shù)據(jù)分析
標(biāo)題路徑:http://chinadenli.net/article0/dooodoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、定制網(wǎng)站、外貿(mào)建站、做網(wǎng)站、Google、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)