【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - 实战 - 后台 - 数据库的访问 - 01 - 通过wx.request或者qcloud.request来获取数据库数据
前言
本例子,通过wx.request来获取数据库数据。
1 构建测试数据库
构建如下数据库,数据库名称user01、数据库表db_user、数据库里面输入了几个数据,然后,我们通过
wx.request来做数据库访问。
注意:微信默认的数据库就是cAuth,如果需要连接其他数据库,微信给出的数据库链接方式已经更新了,这一点我有空的话专门写一遍、篇博文,这里我们用默认的数据库:cAuth即可,在里面添加测试用的表格。
2 数据库访问构建
2.1 构建服务器PHP文件
有关文件路由的设置,请参考我的其他博文:
注意文件需要大写才能访问,对于,路由的详细配置,其实也是可以设置,这在我的另外一篇博文里面已经提到了。
总之,数据的后台访问,你可以自己编写一个文件来处理。这也是典型的MVC的模式。
然后,实践的数据库操控,我们暂时都写到这个文件里面,至于后面,依据软件工程进行的封装,以后在讨论。
2.2 文件头部需要include的数据库文件:
defined('BASEPATH') OR exit('No direct script access allowed');
use \QCloud_WeApp_SDK\Mysql\Mysql as DB;
微信封装的数据库接口的命名空间必须引入先。
然后,你需要创建一个CI_Controller的类,来获取小程序的输入。
class Dbconnector extends CI_Controller {public function index() {
我们在里面定义一个接口的函数,在获取小程序输入的时候,来访问数据库的表。
在实践进行操作之前,我们先把数据库封装的接口和说明写在下一节里面。
3 数据库访问API官方实例:
MySQL命名空间
QCloud_WeApp_SDK\Mysql
API
MySQL::getInstance()
获取 SDK 连接数据库实例,这个是个 PDO 连接实例。
Mysql::insert($tableName, $data)
向数据库中插入数据
参数
$tableName
- 要操作的数据表名(必填)$data
- 要插入的数据(key-value 的 array 类型)
返回值
受影响的行数(数值类型)。
示例
use QCloud_WeApp_SDK\Mysql\Mysql as DB;DB::insert('tableName', ['nickname' => 'Jason','age' => 21
]);
Mysql::select($tableName[, $columns = ['*'], $conditions = '', $operator = 'and', $suffix = ''])
从数据库中查询多条数据
参数
$tableName
- 要操作的数据表名(必填)$columns
- 查询出来的列名$conditions
- 查询条件,支持 string、array 和 key-value array 类型$operator
- 条件之间的操作符$suffix
- SQL 语句的后缀,可以用来插入 order、limit 等
返回值
返回一个包含结果集中所有行的数组。
示例
use QCloud_WeApp_SDK\Mysql\Mysql as DB;// 条件为字符串
$rows = DB::select('tableName', ['*'], 'nickname = "Jason"');// 条件为数组
$rows = DB::select('tableName', ['*'], ['nickname = "Jason"']);// 条件为 key-value 数组
$rows = DB::select('tableName', ['*'], ['nickname' => 'Jason']);// 查询结果
// $rows > [['nickname' => 'Jason','age' => 21]]
Mysql::row($tableName[, $columns = ['*'], $conditions = '', $operator = 'and', $suffix = ''])
从数据库中查询单条数据
参数
$tableName
- 要操作的数据表名(必填)$columns
- 查询出来的列名$conditions
- 查询条件,支持 string、array 和 key-value array 类型$operator
- 条件之间的操作符$suffix
- SQL 语句的后缀,可以用来插入 order、limit 等
返回值
返回一个包含结果集中所有行的第一行。
示例
use QCloud_WeApp_SDK\Mysql\Mysql as DB;// 条件为字符串
$rows = DB::row('tableName', ['*'], 'nickname = "Jason"');// 条件为数组
$rows = DB::row('tableName', ['*'], ['nickname = "Jason"']);// 条件为 key-value 数组
$rows = DB::row('tableName', ['*'], ['nickname' => 'Jason']);// 查询结果
// $rows > ['nickname' => 'Jason','age' => 21]
Mysql::update($tableName, $updates[, $conditions = '', $operator = 'and', $suffix = ''])
从数据库中查询单条数据
参数
$tableName
- 要操作的数据表名(必填)$updates
- 更新的数据对象$conditions
- 查询条件,支持 string、array 和 key-value array 类型$operator
- 条件之间的操作符$suffix
- SQL 语句的后缀,可以用来插入 order、limit 等
返回值
受影响的行数(数值类型)。
示例
use QCloud_WeApp_SDK\Mysql\Mysql as DB;// 条件为字符串
$rows = DB::update('tableName', ['age' => 22], 'nickname = "Jason"');// 条件为数组
$rows = DB::update('tableName', ['age' => 22], ['nickname = "Jason"']);// 条件为 key-value 数组
$rows = DB::update('tableName', ['age' => 22], ['nickname' => 'Jason']);// 查询结果
// $rows > 1
Mysql::delete($tableName, $conditions[, $operator = 'and', $suffix = ''])
从数据库中删除数据
参数
$tableName
- 要操作的数据表名(必填)$conditions
- 查询条件,支持 string、array 和 key-value array 类型$operator
- 条件之间的操作符$suffix
- SQL 语句的后缀,可以用来插入 order、limit 等
返回值
受影响的行数(数值类型)。
示例
use QCloud_WeApp_SDK\Mysql\Mysql as DB;// 条件为字符串
$rows = DB::delete('tableName', 'nickname = "Jason"');// 条件为数组
$rows = DB::delete('tableName', ['nickname = "Jason"']);// 条件为 key-value 数组
$rows = DB::delete('tableName', ['nickname' => 'Jason']);// 查询结果
// $rows > 1
4 实践:
接口文件我们浏览,后现在开始进行正在的实践了,
4.1 数据库数据读取:
$conn = DB::getInstance(); var_dump($conn);
可以先dump一下你的数据库,看看是不是对的。
然后我们用DB的接口来访问一下,数据库中的表格,然后把数据表格打印出来看看是否一致。
$rows = DB::select('db_user',['id']);var_dump($rows);// check the data in the dbforeach ($rows as $value){if(!is_string($value)){echo $pw_iput;echo current($value);if($pw_iput == current($value)){echo 'it is ur user!';break;}else{echo current($value);var_dump($value);continue;}} }
主要foreach的用法,这里$value并不是一个字符串,而是一个对象,而$rows是一个数组,
那么,我们必须进行类型转换,然后,把他化为我们需要的数据类型,最常用的一般就是化为字符串,
我们用下面的一组函数就可以了,例子如下:
<?php
$tmp = array('a','b','c','d');
echo current($tmp)."\n";
echo end($tmp)."\n";
echo current($tmp)."\n";
reset($tmp);
echo current($tmp)."\n";
?>
每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
end() - 将内部指针指向数组中的最后一个元素,并输出
next() - 将内部指针指向数组中的下一个元素,并输出
prev() - 将内部指针指向数组中的上一个元素,并输出
reset() - 将内部指针指向数组中的第一个元素,并输出
each() - 返回当前元素的键名和键值,并将内部指针向前移动
current() 函数返回数组中的当前元素的值。
4.2 把数据通过wx.request的GET或者POST端给到前端
微信给出了一个CGI的DEMO里面给出了,如何通过wx.requrest、qcloud.request来获取服务器的返回的例子,通过这个例子,我们只需要把SQL中的数据给到GET 或者如果是qcloud.request直接在result的结构获取就可以了。
4.2.1 定义页内数据:
4.2.2 在addcgi.js文件设计访问逻辑:
4.2.3 页面如果有数据的话,显示出来
4.2.4 服务器数据返回代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');class Demo extends CI_Controller {public function index() {$this -> json(['code' => 0,'data' => ['msg' => 'Hello World this is from server']]);}
}
服务器的返回数据,给到result的对象里面的data等数据里面。
4.2.5 前端对服务器返回数据的处理:
前面已经提到,返回的数据在result里面,以json的形式给过来了,
注意,给过来的数据是json,对象的数据,这就有时候牵扯到,json对象和json字符串的转换,我在以后的博文介绍。
这里,我们一定要注意,获取的数据,在console里面是可以看到的,而且,比较工整,
这时候,我们在前端获取数据就很简单,
参考:
【参考】微信 - 数据库 -封装接口说明:
https://blog.csdn.net/yellow_hill/article/details/82053413
PHP SDK 文档
https://cloud.tencent.com/document/product/619/12798#mysql
利用好PHP中use的as
https://www.cnblogs.com/mrcn/p/use-and-as-in-php.html
SQL语法基础
https://blog.csdn.net/qq_35246620/article/details/73725106
获取数组的键值
https://www.cnblogs.com/lzs-888/p/5772536.html
php 把对象转化为json
https://blog.csdn.net/zhukangle/article/details/54094669
【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - 实战 - 后台 - 数据库的访问 - 01 - 通过wx.request或者qcloud.request来获取数据库数据相关推荐
- 【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 01 - 文件组成详细分析
1 前言: 本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 微信小程序 - 腾讯云 - PHP - DEMO 是微信提供的一个微信小程序和腾讯云小程序云服务wafer 进行接口的例子. 本仓 ...
- 【中级】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 03 - 腾讯后台初始化 和 CodeIgniter
本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 前言: 本节对Wafer 服务端 SDK 是腾讯云为微信小程序开发者提供的快速开发库,SDK 封装了以下功能供小程序开发者快速调用的源码的初始 ...
- 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 前言: 前一篇已经介绍了,整个wafer2的文件组织,这里结合文件组织,分析一下,微信后台采用的MVC的框架. 路由是服务器配置管理的重要方面 ...
- php qcloud sdk weapp_微信小程序腾讯云php后台解决方案
微信小程序腾讯云php后台解决方案 微信小程序前段需要添加必要的文件以配合后端 (1)wafer2-client-sdk sdk提供了几种接口包括登陆,获取用户openid,图片上传等 (2)conf ...
- 【基础问题】微信小程序 - 腾讯云 - 一站式方案 - PHP - wafer 和 wafer2的区别和wafer2的实践
前言: 项目目前选择了腾讯小程序一站式部署,反而有点懵了,服务器怎么配置呢?好像接口没有,查询后,发现有的Demo有服务器配置有的没有,折腾观察了一会,原来有两个版本wafer.我把关键的地方高亮了, ...
- Mpvue+koa开发微信小程序——腾讯云开发环境的搭建及部署实现真机测试
为什么写这篇文章? 之前写过一篇文章:微信小程序开发错误:LoginError {type: "ERR_WX_GET_USER_INFO"}解决方法 有的伙伴在这篇文章中评论为什么 ...
- 【非常基础实践】 微信小程序 - 腾讯云 - PHP - DEMO - 002 - 云环境搭建和开通指引- 实践
前言: 微信小程序最快捷的方式应该还是利用腾讯云做后台,本文对开启微信小程序和腾讯云的绑定实践了一下. 包括安装,开通,开发环境配置,生产环境配置.很大一部分内容来自官网 1 注册微信小程序(官网贴图 ...
- 【多人会议功能】uniapp - 微信小程序 - 腾讯云
目的:uniapp微信小程序通过腾讯云实现多人会议功能. 效果展示: 功能实现: 前提条件: 注册腾讯云 账号,并完成 实名认证. 推拉流标签不支持个人小程序,要求申请的企业类微信小程序. 步骤一:开 ...
- 微信小程序---腾讯云cos的使用---前端上传图片+后端生成临时密钥
0. 腾讯云cos介绍: - 第一阶段:文件服务器,将文件存储在某个服务器(目录结构的划分). - 第二阶段:- 文件存储,将文件存储在某个服务器(目录结构的划分).- 对象存储,优化存储和操作优化( ...
最新文章
- 机器学习中的算法(4.2):SVM----针对线性可分问题理解
- 『第27天』Sunos(二)
- IPv6 — 网际协议第 6 版
- DevOps笔记-07:持续集成,持续交付,持续部署之间的区别
- ABP入门系列(14)——应用BootstrapTable表格插件
- 数据产品经理为什么吃香?
- 深度学习入门:Day-11_CNN
- java中怎样将字符串转化为date_java如何将string类型转为date类型?怎样转?
- C# 中,利用 Conditional 定义条件方法
- 如何发布google离线地图及二次开发API
- pandownload最新复活版登录失败_神途手游万能登录器app-神途手游万能登录器app最新手机版下载v1.0...
- Linux 中防火墙命令
- 02-03-JSP-Maven-会话-MySQL事务
- mysql sid是什么_数据库名、数据库实例、全局数据库名、服务名、SID等的区别
- axurerp出现错误报告_安装好axure8.1以后,打开直接报错退出
- RocketMQ的长轮询消费方式
- erp系统 服务器在哪里的,云erp服务器在哪
- 树莓派python编程入门与实战解压密码_树莓派Python编程入门与实战
- 微分先行PID控制算法
- Linux服务器c++开发之路,从Linux基础入门到服务器开发高级架构