【高级】小程序 - 腾讯云 - wafer - PHP - 数据库接口的应用和研究 - 02 - DB::select - 正确的接口写法 - 包括布尔判断
前言:
小程序数据接口进行了封装,那么如何针对这些封装进行应用呢,这些封装有哪些限制和优势,本文进行了一点的实践。本文针对 DB::select做了实践和研究,Select的操控显然比insert要复杂很多,微信的封装不错,但是,使用还是比较麻烦,而且,有时候并不能起到作用,感觉这个接口封装的不是很好。
1 DB::select的官方接口说明和封装源码:
图一
2 DB::select 腾讯的例子:
// 条件为字符串
$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]]
腾讯的例子很简单,首先第一个参数为table,第二个参数是要查询的列名数组,这里没有输入,那么默认我们看到是'*',也就是所有的列的数据都会需要。
后面则是三种表示condition的例子,【HSY案】这里都不是一个意思,去查哪些条件,我们分析一下:
'nickname = Jason',
这里的条件是'nickname = Jason'。意思是按照nickname列,然后,这是一个字符串,直接用的,就是WHERE nickname = Jason ,这是标准的SQL SELECT WHERE的句法结构。
['nickname = Jason'],
这里应该是一个一维的组,腾讯做conditionprocess处理了,我们分析一下,看下图,foreach这里,字符串‘nickname = Jason’ 就是数组的值,key = 0,后面显然,$value不是数字,那么,执行,array_push,$cdt尾部插入,变成'0 := 0 ',然后值保留到$execValues[0]里面,
所以,对第二种类型阐述,我们的得到,=
$conditions = ' and 0 := 0' $execValues[0]=‘nickname = Jason’
图二,
回到图一,执行list,把$condition 和 $execValues) 分别赋值为:
list($condition, $execValues) = array_values(self::conditionProcess($conditions, $operator));
$condition = ' and 0 := 0' 和 ‘nickname = Jason’
[HSY案]试验表明这个条件往往得到的结果bud不对。
3. ['nickname' => 'Jason']
这是一个标准的PHP的数组表示方式,发现这种表述是可以的
3 实践:几个经过验证的其他语句组合的可行的表述方式
3.1 某列找变量相等的判断
3.1.1 字符变量
例如: $input_date 是个字符变量,
$rows = DB::select('Notes_List',['*'],['SubmitTime' => $input_date]);
3.1.2 数字判断的方法:
直接用数字写入接口是不可的,这里有一个变通的方式,就是给你需要填写的数字加上引号,也就是把数字转化为字符,
<?php
$str="123.9abc";
$int=intval($str); //转换后数值:123
$float=floatval($str); //转换后数值:123.9
$str=strval($float); //转换后字符串:"123.9"
?>
然后,
$rows = DB::select('Table',['*'],['column' => $str]);
3.1.3 布尔判断的写法
SQL根本不支持bool,用的是1来表述,那么到DB的接口,就是’1‘,于是
判断用:
$rows = DB::select('Table',['*'],['column' => ‘1’]);
3.1.4 多条件组合的写法
从Table中选取全部的列,然后遵循参数3列表给出的所有条件,所有的条件都是and的关系。
$rows = DB::select('Table', ['*'], ['列表1' => $value,'列表2' => $value2],'and');
3.2 不支持的写法
$rows = DB::select('Notes_List',['*'],['Notes_id' => 2,'Notes_id' => 3]); // 无法知道列表是与还是和的关系
$rows = DB::select('Notes_List',['*'],['Notes_id' => 2]);// 数字值大小判断,直接写数字不可
3.4 SQL 语句的自由编辑写法
SQL语句的自由编辑,需要根据你的不同的后台的背景,采用不同的方式。在PHP下,需要用字符连接的办法,拼凑出SQL的相关语句,然后写到DB的API里面就可以了,具体实现可以加我的QQ进行讨论: 28044280
参考:
PHP 数组转字符串,与字符串转数组
https://www.cnblogs.com/jiangzhaowei/p/6856566.html
【高级】小程序 - 腾讯云 - wafer - PHP - 数据库接口的应用和研究 - 02 - DB::select - 正确的接口写法 - 包括布尔判断相关推荐
- 小程序 - 腾讯云 - wafer - PHP - 数据库接口的应用和研究 - 01 - DB::insert
前言: 小程序数据接口进行了封装,那么如何针对这些封装进行应用呢,这些封装有哪些限制和优势,本文进行了一点的实践. 1 DB::insert DB::insert 的官网的详细封装源码: 为此我总结的 ...
- 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 前言: 前一篇已经介绍了,整个wafer2的文件组织,这里结合文件组织,分析一下,微信后台采用的MVC的框架. 路由是服务器配置管理的重要方面 ...
- 【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 01 - 文件组成详细分析
1 前言: 本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 微信小程序 - 腾讯云 - PHP - DEMO 是微信提供的一个微信小程序和腾讯云小程序云服务wafer 进行接口的例子. 本仓 ...
- php qcloud sdk weapp_微信小程序腾讯云php后台解决方案
微信小程序腾讯云php后台解决方案 微信小程序前段需要添加必要的文件以配合后端 (1)wafer2-client-sdk sdk提供了几种接口包括登陆,获取用户openid,图片上传等 (2)conf ...
- 小程序 + 腾讯云移动直播SDK
小程序 + 腾讯云移动直播SDK 小程序 腾讯云移动直播SDK 关于腾讯 M L V B 直播 必须项: 主播开播: 观众收看: 连麦: 发送文本消息: 小程序 主要是推流标签和拉流标签:没什么好说的 ...
- 【基础问题】微信小程序 - 腾讯云 - 一站式方案 - PHP - wafer 和 wafer2的区别和wafer2的实践
前言: 项目目前选择了腾讯小程序一站式部署,反而有点懵了,服务器怎么配置呢?好像接口没有,查询后,发现有的Demo有服务器配置有的没有,折腾观察了一会,原来有两个版本wafer.我把关键的地方高亮了, ...
- 【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - 实战 - 后台 - 数据库的访问 - 01 - 通过wx.request或者qcloud.request来获取数据库数据
前言 本例子,通过wx.request来获取数据库数据. 1 构建测试数据库 构建如下数据库,数据库名称user01.数据库表db_user.数据库里面输入了几个数据,然后,我们通过 wx.reque ...
- 【中级】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 03 - 腾讯后台初始化 和 CodeIgniter
本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 前言: 本节对Wafer 服务端 SDK 是腾讯云为微信小程序开发者提供的快速开发库,SDK 封装了以下功能供小程序开发者快速调用的源码的初始 ...
- 微信小程序 腾讯云 mysql 初始_微信小程序初始化怎么处理?小程序服务器域名配置...
小程序初始化配置指引 假如您已成功创建了小程序资源,需要对现有的资源进行一些简单配置后,才能让小程序跑起来 未创建过资源的用户可以先在小程序控制台进行创建 1.配置微信小程序通信域名 首先我们在小程序 ...
最新文章
- git config配置文件
- linux 火狐无法执行二进制文件_尝试在Linux上运行Shell脚本时“无法执行二进制文件”...
- 前端学习(1151):let经典面试题1
- 查询sql语句是否使用索引
- java gc时会暂停运行吗,java gc 项目终止运行
- 作者:庄会富(1985-),男,中国科学院昆明植物研究所科技信息中心主管
- 杜绝0.1 + 0.2 =0.30000000000000004
- JS分页控件,可用于无刷新分页
- 为了分页,先page.tld,再pageModel,再动态查询
- (17)python_字典
- win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_Windows10隐藏的8个小技巧,每一个都非常实用又高效...
- java毕业生设计药品管理系统演示录像2021计算机源码+系统+mysql+调试部署+lw
- excel多个窗口独立显示_办公软件操作技巧060:如何快速切换excel工作簿
- Pygame 入门基本指南
- Stellarium Windows/Linux编译记录
- 2019版本ppt如何导出论文所需300dpi像素以上的高清图片
- Hive有分区文件到时select不到数据问题-----修复分区命令 msck repair table xxxxx
- [QDialog]qt虚拟键盘的实现以及qdateedit实现打开虚拟键盘
- 【原创】flutter之发布插件包到pub.dev离线在线两套大法
- 解决org.apache.ibatis不存在的问题