Нужна помощь с подключением к бд

Тема в разделе "ESP8266, ESP32", создана пользователем TheMortalko, 20 апр 2020.

  1. TheMortalko

    TheMortalko Нуб

    Здравствуйте.

    У меня такая проблема - нужно с ардуино передать значение переменной в БД MySQL, которая находится на хостинге (с phpmyadmin).

    Для подключения я использую esp-01, раздал с телефона WiFi и подключил.

    После отработки кода в таблице ничего не появляется. Ссылка дана на вход в phpmyadmin.

    Код (C++):
    #include <WiFi.h>
    #include <SoftwareSerial.h>
    int check = 1998;
    WiFiClient client;
    SoftwareSerial mySerial(9, 10);
    #define WIFI_SERIAL mySerial
    void setup() {
    Serial.begin(9600);
    while (!Serial) {
      }
    Serial.print("Serial init OK\r\n");
    WIFI_SERIAL.begin(9600);
    }

    void loop() {  client.connect("ispm11.hostfx.ru/u107096/phpmyadmin/", 80);
    client.print( "GET /test.php?");
    client.print("check=");
    client.print(check);
      client.println( "Connection: close" );
    client.println();
      client.println();
      client.stop();
    client.flush();
    }
    И собственно сам test.php

    PHP:
    <?php
    //адрес хоста
    $dbhost = '82.202.172.211';
    //Имя пользователя
    $dbuser = 'u107096_u107096';
    //пароль для подключения к Mysql
    $dbpass = ' ';
    //имя базы данных
    $dbname = 'u107096_mydb1';
    // сохраняем IP
    $client_ip = $_SERVER['REMOTE_ADDR'];
    // получение значения переменной
    $check = $_GET["check"];


    //устанавливаем подключение к MySQL
    $connect = mysql_connect($dbhost, $dbuser, $dbpass);
    // проверяем состояние подключения
    if(! $connect )
    {
      die('Could not connect: ' . mysql_error());
    }
    // Выбираем базу данных
    mysql_select_db ($dbname, $connect);

    //Отправляем данные в таблицу
    $sql = "INSERT INTO Shots VALUES ('$client_ip', '$check')";

    // проверяем состояние отправки
    if(!mysql_query($sql))
    {echo '<p><b>Data upload error!</b></p>';}
    else
    {echo '<p><b>OK</b></p>';}
    // закрываем соединение с базой
    mysql_close($connect);
    ?>
    На самой плате не горит диод L
     
  2. NikitOS

    NikitOS Шут Администратор

    Функции mysql_* удалены из PHP 7, а в PHP 5 настоятельно не рекомендуют использовать, т.к. устарели.
    Используйте mysqli или PDO
     
    Igor68 нравится это.
  3. TheMortalko

    TheMortalko Нуб

    Проблема осталась та же, несмотря на переписывание на mysqli
    PHP:
    <?php
    //адрес хоста
    $dbhost = '82.202.172.211';
    //Имя пользовтаеля
    $dbuser = 'u107096_u107096';
    //пароль для подключения к Mysql
    $dbpass = '';
    //имя базы данных
    $dbname = 'u107096_mydb1';
    // сохраняем IP на всякий случай
    $client_ip = $_SERVER['REMOTE_ADDR'];
    // получение значения переменной
    $check = $_GET["check"];


    //устанавливаем подключение к MySQL
    $connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    // проверяем состояние подключения
    if(! $connect )
    {
      die('Could not connect: ' . mysqli_connect_error() . PHP_EOL);
    }

    echo "Соединение с MySQL установлено!" . PHP_EOL;
    echo "Информация о сервере: " . mysqli_get_host_info($link) . PHP_EOL;
    //Отправляем данные в таблицу
    $sql = "INSERT INTO Shots VALUES ('$client_ip', '$check')";

    // проверяем состояние отправки
    if(!mysqli_query($sql))
    {echo '<p><b>Data upload error!</b></p>';}
    else
    {echo '<p><b>OK</b></p>';}
    // закрываем соединение с базой
    mysqli_close($connect);
    ?>
     
  4. NikitOS

    NikitOS Шут Администратор

    Вы хоть через браузер пробовали этот код запускать? Он же не рабочий.

    Как-то так:
    PHP:
    <?php

    $client_ip = $_SERVER['REMOTE_ADDR'];
    $check = $_GET["check"];

    $mysqli = new mysqli("localhost", "root", "", "test_base");

    if ($mysqli->connect_errno)
    {
        exit($mysqli->connect_error);
    }

    $prepared = $mysqli->prepare("INSERT INTO `test_table` (`column1`, `column2`) VALUES (?, ?); ");

    if(!$prepared)
    {
        exit('Error');
    }

    $result = $prepared->bind_param("ss",$client_ip,$check);

    if(!$result)
    {
        exit('Error');
    }

    $result = $prepared->execute();

    if(!$result)
    {
        exit('Error');
    }

    $prepared->close();
    $mysqli->close();