紫猫插件-网络共享数据(7-15)

QM[zm]04.07 网络共享数据之多个数据表操作(VIP)

补充知识get set del命令 有参数 可以设置是从哪个表里面提取或者设置 删除的key value

image

image

QM[zm]04.08 网络共享数据之执行SQL语句(VIP)

需要一定的sql基础

注意:返回的内容 它返回的是json字符串 包含了所有的查询结果

1.注意sql语句里面 需要用到 数字1左侧的那个单引号 注意 和平时用的单引号不同 千万不要用错了

2.如果查询结果为空或者查询失败 那么结果就是[]   。


小知识:json字符串的书写规范

JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

JSON的规则很简单: 对象是一个无序的 “ ‘名称/值’ 对” 集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔 [] 中括号表示数组

注意 我们从SQL语句中获取的结构是这样的 一个标准的json字符串

当前脚本第12行:[{"id":"1","0":"1","key":"等级","1":"等级","value":"98","2":"98","type":"string","3":"string"},{"id":"2","0":"2","key":"性别","1":"性别","value":"男","2":"男","type":"","3":""},{"id":"3","0":"3","key":"年龄","1":"年龄","value":"18","2":"18","type":"","3":""}]



小知识:如何从sql返回的json字符串来得到我们想要的内容呢 下面就是源码 思路很简单 用Encode.JsonToTable()来处理返回结果成为一个表 对这个二维表进行双重循环 判断我们需要的key在哪行 然后得到需要的value值

Dim 网络数据库接口地址="http://192.168.0.102/sql.php"
zm.NetDataInit 网络数据库接口地址, "测试数据库"

//SELECT * FROM `测试数据库` 
Dim sql字符串="SELECT * FROM `测试数据库` where `id`<4"
//Dim sql字符串=""
Dim 结果=zm.NetDataQuery(sql字符串)
Dim 是否成功找到=-1

For Each k , v In Encode.JsonToTable(结果)
    For Each kk , vv In v
        //TracePrint "["&kk&"]=["&vv&"]"    
        If v["key"] = "等级" Then 
            TracePrint v["value"]
            是否成功找到 = 1
         
            Exit For
        End If
        If 是否成功找到 > -1 Then 
            Exit For
        Else 
            TracePrint "================="
        End If     
    Next    
Next

QM[zm]04.09 网络共享数据之虚拟控件与VPS区别(VIP)

这节课老师主要介绍了下 网络空间的选择 常见的网络空间供应商   注意一点 虚拟主机便宜 但是它只是提供一个界面上传下载ftp 无法独享 我们要搞的 一定要独享 可以对服务器进行电脑式的操作 比如定时任务之类 这样才能保证满足我们的基本需求 当然 这样的独享服务器价格也是非常的昂贵  大约每月60+  而普通的虚拟主机也就10=30之间

QM[zm]04.10 网络共享数据之外网数据传输(VIP)

本节课老师是用远程桌面 链接上了阿里云的ESC服务器 如同电脑端一样在服务器端进行操作 在服务器端安装了phpstudy 并且调试 访问外网ip测试php网站是否假设成功  这种服务器才是我们需要的 而不是那种普通的虚拟主机 只能通过ftp来上传下载的方式来调整服务器端的网站

QM[zm]04.11 网络共享数据之PHP源码简析(VIP)

本节课大体介绍了下php代码的结构 没什么特别难理解的 不过需要有点php基础

源码里面 可以调整默认数据库的名字  数据库账号和密码 数据库的访问地址  数据库类型等等 还是挺方便的 端口 

原来我的中控接口因为只有中控一个功能  所以我的接口参数也没写多复杂 用action参数来显示当前提交的数据的用处   很久没用了 以后扩展接口功能可以增加这个参数

QM[zm]04.12 网络共享数据之保存数据类型(VIP)

结果 = zm.NetDataGetRows(行数[, 起始行][, 数据表名][, 是否删除])

理解:你可以理解为 select * from 数据表名 limit 起始行,起始行+行数  不过最后一个参数和NetDataGet的思路一样


传递到数据库的参数可以是json字符串 不必限制于几个固定的类型


QM[zm]04.13 网络共享数据之获取多行数据(VIP)

例子

image

结果

image

如何用多行数据获取想要的内容

用encode.TableToJson来显示获取到的多行数据  用二维表结构来实现里面的某个字段的内容或者用foreach双重循环来找到自己需要的数据

QM[zm]04.14 网络共享数据之批量写入数据(VIP)

所谓的批量写入 就是配合for循环 循环的执行zm.NetDataSet  

源码

Dim 网络数据库接口地址="http://192.168.0.102/sql.php"
zm.NetDataInit 网络数据库接口地址, "测试数据库"
For i = 1 To 5    
    zm.NetDataSet "测试key"&cstr(i),"测试value"&cstr(i)
Next

结果

image

QM[zm]04.15 网络共享数据之多开共享登录数据(VIP)

老师这节课的核心就是实现了多个脚本同时从服务端获取账号密码不相互冲突的结构 这个非常的重要

实现思路很简单: 每个脚本循环的从接口获取一条记录 获取后立刻删除该记录

我自己以前是想太多 总觉得有千分之一的可能 比如 A脚本获取到了第一个账号瞬间 还没来得及删除第一个账号记录 B脚本已经通过接口又获得到了第一个账号 但是实际上第一个账号这个时候已经被删除 所以我觉得这个办法还是存在问题的。。目前看是我以前想多了 其实实现的办法非常简单

Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次
Dim 起始时间=TickCount()
Dim 显示字符串=""
Dim 帐号密码=""
Dim 功能切换=ReadUIConfig("功能切换")
Dim 网络数据库接口地址="http://192.168.0.102/sql.php"
zm.NetDataInit 网络数据库接口地址, "测试数据库"


For 5
    帐号密码=""
    帐号密码 = zm.NetDataGetRows(1, True)
TracePrint "帐号是: ", 帐号密码[1]["key"]
TracePrint "密码是: ", 帐号密码[1]["value"]
    显示字符串=显示字符串&帐号密码[1]["key"]&"-"&帐号密码[1]["value"]&"\n"
    
Next

Do
    ShowMessage 显示字符串
    Delay 3000
Loop

结果:

image

posted @ 2019-01-04 21:56  点-滴  阅读(1029)  评论(0编辑  收藏  举报