前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >22-物联网开发终端管理篇-PHP使用PDO方式连接MySQL数据库,并对外提供GET,POST接口获取数据库数据(.Windows系统)

22-物联网开发终端管理篇-PHP使用PDO方式连接MySQL数据库,并对外提供GET,POST接口获取数据库数据(.Windows系统)

作者头像
杨奉武
发布2022-09-20 15:14:20
6920
发布2022-09-20 15:14:20
举报
文章被收录于专栏:知识分享知识分享

PHP打开数据库插件

1,这个是PHP所有插件库位置

2,修改下php.ini 文件里面的插件路径

找到extension_dir, 去掉前面的;号, 后面的路径写ext文件夹的路径

extension_dir = "C:/php8/ext"

3,接着往下找到extension=pdo_mysql 去掉前面的;号

去掉前面的;号, 代表PHP使用pdo插件.

4,重启一下

测试

1,在网站根目录建一个后缀名为.php的文件,里面的内容按照下面的填写

代码语言:javascript
复制
<?php

$servername = "localhost";//数据库地址
$username = "root";//数据库用户
$password = "11223344";//数据库密码
$dbname = "historical_data";//链接的数据库名字
try {
    $conn = new PDO("mysql:host=$servername;port=3306;dbname=$dbname", $username, $password);//链接数据库    
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置 PDO 错误模式为异常

    echo "PDO的API连接成功";

    $conn=null;//关闭
}
catch(PDOException $e){
    echo "errorCode:DataBase".$e->getMessage();
}

?>

在浏览器上测试下, ip地址填写自己的服务器地址

http://ip地址/php_pdo.php

对外提供GET,POST接口获取数据库数据

1,直接访问数据库是不安全的,咱需要做http接口进行访问

如果用户按照前面的章节,自己的数据库里面应该有设备的数据了

2,GET接口规定

现在数据库里面已经存储了设备的数据了,获取某个设备某个时间段的历史数据格式规定如下:

http://ip地址/php_mysql_get.php?client_id=设备的ID&data_time_start=开始时间&data_time_stop=结束时间

假设获取client_id为863488051205089设备在2022-07-30 00:00:00 到  2022-07-30 22:48:00  的历史数据

http://ip地址/php_mysql_get.php?client_id=863488051205089&data_time_start=2022-07-30 00:00:00&data_time_stop=2022-07-30 22:48:00

数据返回为json格式规定如下:

代码语言:javascript
复制
{
"code": "OK",
"client_id": "设备的client_id",
"data": [
{
"data_time": "2022-07-30 22:45:08",
"temperature": 34,
"humidity": 40
},
{
"data_time": "2022-07-30 22:45:18",
"temperature": 34,
"humidity": 40
},
{
"data_time": "2022-07-30 22:45:28",
"temperature": 34,
"humidity": 40
}
]
}

2,在网站根目录建一个后缀名为.php的文件,里面的内容按照下面的填写

代码语言:javascript
复制
<?php
//http://ip地址/php_mysql_get.php?client_id=863488051205089&data_time_start=2022-07-30 00:00:00&data_time_stop=2022-07-30 22:48:00
$servername = "localhost";//数据库地址
$username = "root";//数据库用户
$password = "11223344";//数据库密码
$dbname = "historical_data";//链接的数据库名字

try {
    
    $client_id = $_GET["client_id"];
    $data_time_start = $_GET["data_time_start"];
    $data_time_stop = $_GET["data_time_stop"];

    try {
        $conn = new PDO("mysql:host=$servername;port=3306;dbname=$dbname", $username, $password);//链接数据库    
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置 PDO 错误模式为异常 

        $sql = "select data_time,temperature,humidity from humiture_table where client_id="."'".$client_id."'"."and data_time>="."'".$data_time_start."'". "and data_time<="."'".$data_time_stop."'";

        $result=$conn->prepare($sql);//准备查询语句
        $result->execute();            //执行查询语句,并返回结果集

        //$result = $conn->query($sql);//发送SQL语句并接收数据库返回

        $note;$i=0; //初始化变量
        if ($result && $result->rowCount()) {//查询到数据
            while($row = $result->fetch()) {//循环读出数据

                $note["data_time"]=$row['data_time'];
                $note["temperature"]=$row['temperature'];
                $note["humidity"]=$row['humidity'];
                //放到二维数组里
                $notes[$i++]=$note;

                //echo $row['temperature'].$row['humidity']. "\r\n";//打印数据
            }
            $notes = array('code'=>'OK','client_id'=>$client_id,'data'=>$notes);//组合成key-value形式的数组
            echo json_encode($notes);//把数组转为json格式
        }
        else{
            echo "{\"code\":\"ERR\",\"msg\":\"no data\"}";
        }
        $conn=null;//关闭
    }
    catch(PDOException $e){
        $err = array('code'=>'ERR','msg'=>'database execute','info'=>$e->getMessage());
        echo json_encode($err);//把数组转为json格式
    }
} catch (Exception $e) {
    echo $e->getMessage();
}

?>

在浏览器上测试下, ip地址填写自己的服务器地址,设备id和查询的时间段按照自己数据库里面记录的数据填写(保证可以查到数据)

http://ip地址/php_mysql_get.php?client_id=设备的client_id & data_time_start=2022-07-30 00:00:00&data_time_stop=2022-07-30 22:48:00

然后应该就可以了

3,现在改一个POST接口的

由于get接口的请求数据会在http://上显示出来,所以最后是做成post接口的.

在网站根目录建一个后缀名为.php的文件,里面的内容按照下面的填写

代码语言:javascript
复制
<?php
//http://ip地址/php_mysql_post.php
//client_id=863488051205089&data_time_start=2022-07-30 00:00:00&data_time_stop=2022-07-30 22:48:00
$servername = "localhost";//数据库地址
$username = "root";//数据库用户
$password = "11223344";//数据库密码
$dbname = "historical_data";//链接的数据库名字

try {
    
    $client_id = $_POST["client_id"];
    $data_time_start = $_POST["data_time_start"];
    $data_time_stop = $_POST["data_time_stop"];

    try {
        $conn = new PDO("mysql:host=$servername;port=3306;dbname=$dbname", $username, $password);//链接数据库    
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置 PDO 错误模式为异常 

        $sql = "select data_time,temperature,humidity from humiture_table where client_id="."'".$client_id."'"."and data_time>="."'".$data_time_start."'". "and data_time<="."'".$data_time_stop."'";

        $result=$conn->prepare($sql);//准备查询语句
        $result->execute();            //执行查询语句,并返回结果集

        //$result = $conn->query($sql);//发送SQL语句并接收数据库返回

        $note;$i=0; //初始化变量
        if ($result && $result->rowCount()) {//查询到数据
            while($row = $result->fetch()) {//循环读出数据

                $note["data_time"]=$row['data_time'];
                $note["temperature"]=$row['temperature'];
                $note["humidity"]=$row['humidity'];
                //放到二维数组里
                $notes[$i++]=$note;

                //echo $row['temperature'].$row['humidity']. "\r\n";//打印数据
            }
            $notes = array('code'=>'OK','client_id'=>$client_id,'data'=>$notes);//组合成key-value形式的数组
            echo json_encode($notes);//把数组转为json格式
        }
        else{
            echo "{\"code\":\"ERR\",\"msg\":\"no data\"}";
        }
        $conn=null;//关闭
    }
    catch(PDOException $e){
        $err = array('code'=>'ERR','msg'=>'database execute','info'=>$e->getMessage());
        echo json_encode($err);//把数组转为json格式
    }
} catch (Exception $e) {
    echo $e->getMessage();
}

?>

打开测试工具 网站  http://www.ecjson.com/httpurl/

通信方式选择 POST 

路径: http://ip地址/php_mysql_post.php

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP打开数据库插件
    • 1,这个是PHP所有插件库位置
      • 2,修改下php.ini 文件里面的插件路径
        • 3,接着往下找到extension=pdo_mysql 去掉前面的;号
          • 4,重启一下
          • 测试
            • 1,在网站根目录建一个后缀名为.php的文件,里面的内容按照下面的填写
            • 对外提供GET,POST接口获取数据库数据
              • 1,直接访问数据库是不安全的,咱需要做http接口进行访问
                • 2,GET接口规定
                  • 2,在网站根目录建一个后缀名为.php的文件,里面的内容按照下面的填写
                    • 3,现在改一个POST接口的
                    相关产品与服务
                    数据库
                    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档