jjzjj

基于EMQX云服务器的环境调节系统(微信小程序连接MySQL篇)

帕法西尔 2024-02-19 原文

文章目录

1、宝塔上创建mysql数据库

选择创建网站,记住刚刚的根目录,后续我们会创建接口文件放置在那里

然后点击数据库

这里我用的是这个good数据库,点击管理即可使用phpmyadmin,我在一开始搭建服务器的时候就安装好phpmyadmin插件了。然后创建数据表格

选择结构,创建对应的数据名,id选择自增,这样方便我们查看表格

2、连接mysql数据库

mysql我也是个半吊子,我也是查看菜鸟教程然后一步一步调试才成功的,不单单有说有用指令连接数据,也有用php连接数据库

<?php
$servername = "localhost:3306"; //数据库地址
$username=$_GET['name'];     //获取外来数据库名   name要与微信小程序那个相对应
$password=$_GET['password'];  //数据库密码
$database=$_GET['database'];   //数据库名
$temp=$_GET['temp'];    //对应的数据库表格名
$humi=$_GET['humi'];
$led=$_GET['led'];
$feng=$_GET['feng'];
$guang=$_GET['guang'];
$doji=$_GET['doji'];
//连接数据库

$conn = mysqli_connect($servername, $username, $password);
if(! $conn )
{
  die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功';
//这里是sql语句,主要改这里
$sql = "INSERT INTO shuj ".
        "(temp,humi,led,feng,guang,doji) ".
        "VALUES ".
        "('$temp','$humi' ,'$led','$feng','$guang','$doji')"; 

mysqli_select_db( $conn, $database );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
  die('无法插入数据: ' . mysqli_error($conn));
}
echo "数据插入成功\n";
mysqli_close($conn);
?>

如果不知道php语句怎么写,这里也可以使用phpmyadmin通过的sql转换php代码

这个插入和连接数据库的php文件放置在刚刚我们创建的根目录

3、微信小程序连接数据库和插入数据

getCurrentPages是获取当前页面数据的,80是网页默认端口,记得开放端口,把这些相关数据发送给我们刚刚的php文件,这样我们就可以把数据传输到数据库了。

我是把这个函数放在onLoad函数上定时运行的

//传数据到mysql
 insert:function(){
  var sele =getCurrentPages();
  wx.request({
      url: 'http://********:80/insert.php',  //*号是刚刚创建的网址域名
      data:{ 
          name:'****',  //数据库名
          password:'****',  //数据库密码
          database:'****',  //数据库名
          temp:sele[sele.length-1].data.temp,
          humi:sele[sele.length-1].data.humi,
          led:sele[sele.length-1].data.led,
          feng:sele[sele.length-1].data.feng,
          guang:sele[sele.length-1].data.guang,
          doji:sele[sele.length-1].data.Air,
      },
      success: function(res)
      {
           console.log(res.data)
      },
    })

},
 onLoad: function (options) {
    var that=this
    setInterval(function(){
      that.pduan();
      that.insert();
    },8000
    )  
  },

4、微信小程序获取数据库最新多条数据

菜鸟教程这里提供了三种方法获取数据,我是第三种上的基础改进的,因为我获取的是多条数据,后面把它们添加进去成数组,再利用json_encode把数值转换成json格式

<?php
$servername = "localhost:3306";
$username=$_GET['name'];  
$password=$_GET['password'];
$database=$_GET['database'];
$conn = mysqli_connect($servername, $username, $password);
if(! $conn )
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
//$sql = "SELECT $user, $pass FROM test";
 $sql = "SELECT * FROM `shuj`\n". " ORDER BY `id` DESC limit 8";
mysqli_select_db( $conn, $database );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('无法读取数据: ' . mysqli_error($conn));
}
class emp{
    public $id = "";
    public $temp= "";
    public $humi = "";
    public $led = "";
    public $feng= "";
    public $guang = "";
    public $doji= "";

    
}

while($row = mysqli_fetch_array($retval, MYSQLI_NUM))
{ 
    
        //$a =array();
        //$data=array('id'=>$row[0],$user =>$row[1],$pass=>$row[2]);
        // array_push($a,$data);
        //echo json_encode($a);
        $e = new Emp();
        $e->id = $row[0];
        $e->temp = $row[1];
        $e->humi = $row[2];
        $e->led =$row[3];
        $e->feng= $row[4];
        $e->guang= $row[5];
        $e ->doji=$row[6];
        $data[] =$e;
        
}
echo json_encode($data);
// 释放内存
mysqli_free_result($retval);
mysqli_close($conn);
?>

微信小程序只需要发送请求就可以,这里难就难在刚刚的php数据转换格式

insert:function(){
    wx.request({
        url: 'http://*******:80/insert.php', //服务器ip
        data:{ 
            name:'*****', //数据库名
            password:'****', //数据库密码
            database:'****', //数据库名
            username:this.data.username,
            pass:this.data.pass,
        },
        success: function(res)
        {
             console.log(res.data)
        },
      })

5、数据可视化

这里我是参考了另一个博主的博客做的,简单易懂,我这里稍微改进了一下,只显示日期,没有显示年份。

https://blog.csdn.net/qq_52827563/article/details/121726546?

只需要把原来getOption函数里面的requset换成我这个请求接口就可以

  getOption:function(){
    var _this = this
    wx.request({
      
      url: 'http://********:80/select.php',
      data:{ 
          name:'****',
          password:'****',
          database:'****',
      },
      success:(res)=>{
       _this.setData({
          data:res.data
       }) 
      var i
      var guang=[];
      var date =[];
      for(i=0;i<=res.data.length-1;i++){
        guang[i]=res.data[i].guang
        date[i]=res.data[i].id
      }

       _this.init_chart(date,guang)
      },
    })
  
  }


写到这里差不多全部完工了,ESP32C3+EMQX云服务器+微信小程序+mysql画下句号

有关基于EMQX云服务器的环境调节系统(微信小程序连接MySQL篇)的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  7. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  8. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  9. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  10. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

随机推荐