C++ 将NodeMCU数据存储到MySQL数据库中

C++ 将NodeMCU数据存储到MySQL数据库中,c++,http,nodemcu,C++,Http,Nodemcu,我正在从事一个项目,该项目要求我将DHT11湿度和温度数据存储到本地MySQL数据库中。我已经在我的计算机上安装了XAMPP服务器并启动了MySQL服务器。我在htdocs文件夹中编写了一个.php脚本,可以将数据插入数据库。.php脚本(dht.php)如下所示: <?php class dht11{ public $link=''; function __construct($temperature, $humidity){ $this->connect(); $th

我正在从事一个项目,该项目要求我将DHT11湿度和温度数据存储到本地MySQL数据库中。我已经在我的计算机上安装了XAMPP服务器并启动了MySQL服务器。我在htdocs文件夹中编写了一个.php脚本,可以将数据插入数据库。.php脚本(dht.php)如下所示:

<?php
class dht11{
 public $link='';
 function __construct($temperature, $humidity){
  $this->connect();
  $this->storeInDB($temperature, $humidity);
 }

 function connect(){
  $this->link = mysqli_connect('localhost','root','') or die('Cannot connect to the DB');
  mysqli_select_db($this->link,'temphumid') or die('Cannot select the DB');
 }

 function storeInDB($temperature, $humidity){
  $query = "insert into dht11 set humidity='".$humidity."', temperature='".$temperature."'";
  $result = mysqli_query($this->link,$query) or die('Errant query:  '.$query);
 }

}
if($_GET['temperature'] != '' and  $_GET['humidity'] != ''){
 $dht11=new dht11($_GET['temperature'],$_GET['humidity']);
}


?>
#include "DHT.h"
#define DHTTYPE DHT11
#define dht_dpin 0
DHT dht(dht_dpin, DHTTYPE);

// Connecting to  WiFi
#include<ESP8266WiFi.h>
#include <WiFiClient.h>
#include<ESP8266HTTPClient.h>

const char* ssid = "XXXX";
const char* password = "XXXXX";
const char* serverName = "http://192.168.X.X/testcode/dht.php";

void setup() {
  dht.begin();
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
  delay(700);

  Serial.print("Connecting to ");
  Serial.print(ssid);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected");
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
  // but actually the LED is on; this is because
  // it is active low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
//  delay(1000);                      // Wait for two seconds (to demonstrate the active low LED)


  float h = dht.readHumidity();
  float t = dht.readTemperature();

  Serial.print("Current humidity = ");
  Serial.print(h);
  Serial.print("%   ");
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.println("C   ");
  delay(1000);

  //MYSQL CODE HERE
  if (WiFi.status() == WL_CONNECTED){
    Serial.println("Making request HTTP");
    HTTPClient http;

    http.begin(serverName);
    http.addHeader("Content-Type", "text/plain");
    int responseCode = http.POST("/testcode/dht.php/temperature=33&humidity=77");
    Serial.println(responseCode);
  }
}
但是,我无法将nodeMCU中的数据插入MySQL数据库。我的代码如下:

<?php
class dht11{
 public $link='';
 function __construct($temperature, $humidity){
  $this->connect();
  $this->storeInDB($temperature, $humidity);
 }

 function connect(){
  $this->link = mysqli_connect('localhost','root','') or die('Cannot connect to the DB');
  mysqli_select_db($this->link,'temphumid') or die('Cannot select the DB');
 }

 function storeInDB($temperature, $humidity){
  $query = "insert into dht11 set humidity='".$humidity."', temperature='".$temperature."'";
  $result = mysqli_query($this->link,$query) or die('Errant query:  '.$query);
 }

}
if($_GET['temperature'] != '' and  $_GET['humidity'] != ''){
 $dht11=new dht11($_GET['temperature'],$_GET['humidity']);
}


?>
#include "DHT.h"
#define DHTTYPE DHT11
#define dht_dpin 0
DHT dht(dht_dpin, DHTTYPE);

// Connecting to  WiFi
#include<ESP8266WiFi.h>
#include <WiFiClient.h>
#include<ESP8266HTTPClient.h>

const char* ssid = "XXXX";
const char* password = "XXXXX";
const char* serverName = "http://192.168.X.X/testcode/dht.php";

void setup() {
  dht.begin();
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
  delay(700);

  Serial.print("Connecting to ");
  Serial.print(ssid);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected");
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
  // but actually the LED is on; this is because
  // it is active low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
//  delay(1000);                      // Wait for two seconds (to demonstrate the active low LED)


  float h = dht.readHumidity();
  float t = dht.readTemperature();

  Serial.print("Current humidity = ");
  Serial.print(h);
  Serial.print("%   ");
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.println("C   ");
  delay(1000);

  //MYSQL CODE HERE
  if (WiFi.status() == WL_CONNECTED){
    Serial.println("Making request HTTP");
    HTTPClient http;

    http.begin(serverName);
    http.addHeader("Content-Type", "text/plain");
    int responseCode = http.POST("/testcode/dht.php/temperature=33&humidity=77");
    Serial.println(responseCode);
  }
}
#包括“DHT.h”
#定义DHT类型DHT11
#在0中定义dht_DPU
DHT DHT(DHT_dpin,DHT类型);
//连接到WiFi
#包括
#包括
#包括
常量字符*ssid=“XXXX”;
const char*password=“XXXXX”;
常量字符*服务器名=”http://192.168.X.X/testcode/dht.php";
无效设置(){
dht.begin();
序列号开始(115200);
引脚模式(LED_内置,输出);//将LED_内置引脚初始化为输出
延迟(700);
串行打印(“连接到”);
串行打印(ssid);
WiFi.begin(ssid,密码);
while(WiFi.status()!=WL_已连接){
延迟(500);
连续打印(“.”);
}
Serial.println(“”);
Serial.println(“WiFi连接”);
}
//循环函数永远反复运行
void循环(){
digitalWrite(LED_BUILTIN,低);//打开LED(注意,低是电压电平
//但实际上LED是亮着的,这是因为
//它在ESP-01上处于低激活状态)
延迟(1000);//等一下
digitalWrite(LED内置,高);//通过使电压高来关闭LED
//延迟(1000);//等待两秒钟(以显示激活的低电平LED)
浮动h=dht.read湿度();
浮点数t=dht.readTemperature();
串行打印(“当前湿度=”);
连续打印(h);
连续打印(“%”);
串行打印(“温度=”);
连续打印(t);
序列号。打印号(“C”);
延迟(1000);
//这里是MYSQL代码
如果(WiFi.status()==WL_已连接){
Serial.println(“生成请求HTTP”);
HTTPClient-http;
http.begin(serverName);
addHeader(“内容类型”、“文本/普通”);
int responseCode=http.POST(“/testcode/dht.php/temperature=33&湿度=77”);
Serial.println(响应代码);
}
}
执行此命令时,我在数据库中看不到任何数据。有人能指出什么地方不对吗

我试着在网上查找,虽然有些人遇到过类似的问题,但他们没有提供.php文件信息,所以我无法找到解决这个问题的方法


我遵循教程。< /P>,你的PHP文件工作,所以问题是用你的C++代码。BTW,你必须做一个HTTP GET请求,而不是一个POST。嗯,你的PHP文件工作,所以问题是用你的C++代码。BTW,你必须作出一个HTTP GET请求,而不是一个帖子。