PHP GET-запросы: приём данных с ESP8266 и вывод из MySQL
PHP GET-запросы позволяют легко принимать данные с ESP8266 или Arduino и сохранять их в базу MySQL. Это простой способ создать логгер температуры, влажности или других датчиков. Данные передаются в URL (?temp=23&hum=55), PHP обрабатывает запрос, вставляет в таблицу и выводит на веб-страницу. Подходит для умного дома, метеостанций, мониторинга. Работает на локальном сервере OpenServer или XAMPP. GET-запросы простые, видимые, идеальны для датчиков.
Что такое GET-запрос
GET-запрос передаёт данные в адресной строке после ?. Формат: ключ=значение&ключ=значение. Длина до 2000 символов. Простой и удобный для передачи показаний датчиков температуры DHT11/DHT22, влажности или движения HC-SR501. Нет нужды в сложных формах — ESP8266 отправляет HTTP GET на insert.php.
Приём данных в PHP
В PHP данные доступны через $_GET[‘ключ’]. Проверяйте наличие: $_GET[‘temp’] ?? ». Выводите echo или сохраняйте в MySQL. Для безопасности используйте mysqli_real_escape_string().
Подключение к MySQL
<?php
$conn = new mysqli("localhost", "root", "", "arduino");
if ($conn->connect_error) die("Ошибка подключения");
?>
подключается к базе данных arduino на localhost.
использует пользователя root без пароля.
при ошибке подключения завершает выполнение с сообщением.
Сохранение данных insert.php
<?php
include 'connect.php';
if (isset($_GET['temp']) && isset($_GET['hum'])) {
$temp = $_GET['temp'];
$hum = $_GET['hum'];
$sql = "INSERT INTO dht (temperature, humidity) VALUES ('$temp', '$hum')";
mysqli_query($conn, $sql);
}
?>
принимает значения temp и hum из GET-параметров.
вставляет их в таблицу dht.
не возвращает ничего клиенту.
Важно: уязвим к SQL-инъекциям.
Вывод данных на страницу
SELECT * FROM dht ORDER BY id DESC. Цикл while выводит строки таблицы. Добавьте сортировку по температуре, влажности или дате. Пагинация LIMIT/OFFSET для больших логов.
<?php
include 'connect.php';
$sql = "SELECT * FROM dht ORDER BY id DESC LIMIT 50";
$result = mysqli_query($conn, $sql);
echo "<table border='1'><tr><th>ID</th><th>Температура</th><th>Влажность</th><th>Время</th></tr>";
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr><td>".$row['id']."</td><td>".$row['temperature']." °C</td><td>".$row['humidity']."%</td><td>".$row['datetime']."</td></tr>";
}
echo "</table>";
?>
подключается к базе через connect.php.
выбирает последние 50 записей из таблицы dht.
выводит их в HTML-таблицу (ID, температура, влажность, время).
Таблица создаётся с рамкой (border=’1′) и обновляется при каждом выполнении скрипта.
Сортировка и пагинация
ORDER BY temperature DESC для высоких значений сверху. ?sort=temp&order=asc в URL. Пагинация: ?page=2 с LIMIT 20 OFFSET ($page-1)*20. Автообновление: <meta http-equiv=»refresh» content=»30″>.
Заключение
PHP GET-запросы + MySQL — надёжный способ хранения данных с ESP8266. Логи температуры и влажности доступны в браузере. Добавьте графики Chart.js или уведомления — получите полноценную метеостанцию.
FAQ — PHP GET-запросы и MySQL
Данные не сохраняются в MySQL?
Проверьте URL insert.php, права таблицы, тип полей. Добавьте проверку mysqli_error().
GET или POST для датчиков?
GET проще для ESP8266, POST безопаснее для больших данных.
Сортировка по температуре?
ORDER BY temperature DESC/ASC в SQL-запросе.
Пагинация страниц?
LIMIT 20 OFFSET $offset, ссылки ?page=1,2…
Безопасность GET?
Для датчиков достаточно. Используйте prepared statements.
Автообновление страницы?
<meta http-equiv=»refresh» content=»30″> в head.
Графики из MySQL?
Chart.js + JSON из PHP с последними записями.