Я хочу отправить некоторую дату через почтовый запрос от ESP8266 на сервер, на котором работает php.
Цель состоит в том, чтобы захватить данные через ESP8266 и DHT22 и сохранить их на mariaDB через php.
Я знаю, что PDO может быть более безопасным, но сначала я хочу попробовать это.
Проблема в том, что данные, похоже, отправляются, но не записываются в БД.
- Подключение к Wi-Fi (ОК)
- подключиться к удаленному серверу (кажется, все в порядке)
- PHP-файл на стороне сервера (кажется, все в порядке) - ввод данных по ссылке работает
Эскиз работает на ESP8266:
if (client.connect(server, 80)) {
Serial.println("connected!!");
WiFi.printDiag(Serial);
String data = "temp="
+ (String) sensorTemp
+ "&humi="
+(String) sensorHum;
client.println("POST /connect2.php HTTP/1.1");
client.print("Host: xxx.xxx.xx.xxxx\n");
client.println("User-Agent: ESP8266/1.0");
client.println("Connection: close");
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(data.length());
client.print("\n\n");
client.println (data);
client.stop();
Serial.println("\n");
Serial.println("My data string im POSTing looks like this: ");
Serial.println(data);
Serial.println("And it is this many bytes: ");
Serial.println(data.length());
delay(2000);
client.stop();
}
Серверная часть php:
<?php
$servername = "xxx.xxx.xx.xxx";
$username = "username";
$password = "password";
$dbname = "dbname";
$temp = $_REQUEST['temp'];
$humi = $_REQUEST['humi'];
//date_default_timezone_set('America/Toronto');
//$date=date('m-d-Y H:i:s') ;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO dbname (temp, humi)
VALUES ('$humi', '$temp')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>