Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL][PHP]php dodawanie wartosci do bazy danych

Napisany przez: Bullseye 20.07.2018, 20:55:30

Hej, zaczynam zabawę z programowaniem w C, i jako że chciałem dane z uC wysyłać do mojej bazy danych by potem na stronie www ładnie je przedstawić smile.gif
Problemem jest skrypt który znalazłem (a sam nie umiem napisać sad.gif ), mianowicie za każdym razem dostaje komunikat: "Connection failed: Connection refused"

skrypt poniżej:

  1. <?php
  2. $servername = "ADRES"; //Adres serwera MySQL
  3. $username = "NAZWA"; //Nazwa konta użytkownika MySQL
  4. $password = "HASLO"; //Hasło do konta użytkownika MySQL
  5. $dbname = "NAZWA"; //Nazwa bazy danych
  6.  
  7. $conn = new mysqli($servername, $username, $password, $dbname); //Utworzenie połączenia z MySQL
  8.  
  9. if ($conn->connect_error) { //Sprawdzenie połączenia z MySQL
  10. http://www.php.net/die("Connection failed: " . $conn->connect_error); //Wyświetlenie informacji o problemie z połączeniem
  11. }
  12.  
  13. $a = $_GET["a"]; //Odebranie danych wysłanych przez ESP
  14. $b = $_GET["b"]; //Odebranie danych wysłanych przez ESP
  15. $c = $_GET["c"];
  16. $d = $_GET["d"];
  17. $e = $_GET["e"];
  18.  
  19. $sql = "INSERT INTO DOM (wilgotnosc, tempOUT, odczuwalna, cisnienie, tempIN)
  20. VALUES ('$a', '$b', '$c', '$d', '$e')";
  21. //W pierwszej lini następuje zdefiniowanie nazwy tabeli oraz kolumn do których mają zostać dodane dane
  22. //a w drugiej definiowanie danych które zostaną dodane to tabeli
  23.  
  24. // Można to polecenie także zapisać w formie jednej lini ale polecam pozostać przy zapisie w dwóch liniach ponieważ jest bardziej przejrzysty
  25. // $sql = "INSERT INTO test (Dane1, Dane2) VALUES ('$a', '$b')";
  26.  
  27. if ($conn->query($sql) === TRUE) { //Sprawdzenie czy dane zostały poprawnie dodane do tabeli
  28. http://www.php.net/echo "Rekord zostal dodany poprawnie!"; //Wyświetlenie komunikatu o powodzeniu
  29. } else {
  30. http://www.php.net/echo "Error: " . $sql . "<br>" . $conn->error; //Wyświetlenie komunikatu o niepowodzeniu wraz z informacjami na temat błędu
  31. }
  32.  
  33. $conn->close(); //Zamknięcie połączenia z MySQL
  34. ?>


Dane oczywiscie do bazy danych podałem swoje smile.gif

W czym problem że nie chce dodać rekordu do bazy ?

Gamoń ze mnie, ustawiałem usilnie by połączenie było z zewnątrz a właczony był firewall blokujacy dostęp z zewnatrz do bazy danych smile.gif
Wystarczyło zmienić adres na: 127.0.0.1
Albo odblokować port w firewallu smile.gif

Napisany przez: viking 20.07.2018, 21:16:00

W linii 16 masz SQL injection. http://fi2.php.net/manual/en/mysqli.prepare.php

Napisany przez: Bullseye 20.07.2018, 23:01:46

Problemem był zły adres bazy danych smile.gif

ale teraz mam inny problem, z odczytaniem wartości w mojej bazie danych, ktoś coś podpowie ? Serwer zwraca HTTP ERROR 500

  1. <html>
  2. <head>
  3. <title>Tutorial</title>
  4. </head>
  5. <body>
  6. <?php
  7. $servername = "ADRES";
  8. $username = "NAZWA";
  9. $password = "HASLO";
  10. $dbname = "NAZWA";
  11. $conn = new mysqli($servername, $username, $password, $dbname);
  12. if ($conn->connect_error) {http://www.php.net/die("Connection failed: " . $conn->connect_error);}
  13. $sql = "SELECT id, wilgotnosc, tempOUT, odczuwalna, cisnienie, tempIN, FROM DOM ORDER BY id DESC LIMIT 10000";
  14. $result = $conn->query($sql);
  15. if ($result->num_rows > 0) {
  16. http://www.php.net/echo '<table cellspacing="0" border="1" rules="rows" bordercolor="black">';
  17. http://www.php.net/echo '<tr>
  18. <td width="100px" bgcolor="silver" align="center">Numer:</td>
  19. <td width="100px" bgcolor="gray" align="center">Wilgotnosc:</td>
  20. <td width="100px" bgcolor="silver" align="center">Temperatura Zewnetrzna:</td>
  21. <td width="100px" bgcolor="gray" align="center">Temperatura Odczuwalna:</td>
  22. <td width="100px" bgcolor="silver" align="center">Cisnienie:</td>
  23. <td width="100px" bgcolor="gray" align="center">Temperatura Wewnatrz:</td>
  24. </tr>';
  25. while($row = $result->fetch_assoc()) {
  26. http://www.php.net/echo '<tr>
  27. <td bgcolor="silver" align="center">' . $row["id"]. '</td>
  28. <td bgcolor="gray" align="center">' . $row["wilgotnosc"].'</td>
  29. <td bgcolor="silver" align="center">' . $row["tempOUT"]. "</td>
  30. <td bgcolor="gray" align="center">' . $row["odczuwalna"]. "</td>
  31. <td bgcolor="silver" align="center">' . $row["cisnienie"]. "</td>
  32. <td bgcolor="gray" align="center">' . $row["tempIN"]. "</td>
  33. </tr>";
  34. }
  35. http://www.php.net/echo "</table>";
  36. } else {
  37. http://www.php.net/echo "0 results";
  38. }
  39. $conn->close();
  40. ?>
  41. </body>
  42. </html>
  43.  

Napisany przez: b4rt3kk 20.07.2018, 23:53:07

Sprawdź error log apacha i wklej tu błąd.

Napisany przez: viking 21.07.2018, 05:04:18

Wiem bo w końcu napisałeś jednak na przyszłość zwróciłem uwagę na bardzo ważną kwestię zabezpieczeń. Poczytaj podpięty temat w którym jest m.in. jak włączyć błędy. Tu pewnie chodzi o przecinek w zapytaniu.

Napisany przez: Bullseye 21.07.2018, 06:52:14

Taki serwerek prywatny raczej nikt nie zaatakuje, a nawet jeśli to stracę parę pomiarów bardziej dla zabawy niż potrzebnych, ale dzięki za radę ! smile.gif

Więc przy dwóch wartościach zbieranych z bazy wszystko działa jak należy, ale jak dodaje trzecią wartość to niestety brak reakcji, poniżej działający skrypt:

  1. <html>
  2. <head>
  3. <title>Tutorial</title>
  4. </head>
  5. <body>
  6. <?php
  7. $servername = "";
  8. $username = "";
  9. $password = "";
  10. $dbname = "";
  11. $conn = new mysqli($servername, $username, $password, $dbname);
  12. if ($conn->connect_error) {http://www.php.net/die("Connection failed: " . $conn->connect_error);}
  13. $sql = "SELECT ID, wilgotnosc, tempOUT, odczuwalna FROM DOM ORDER BY id ASC LIMIT 100";
  14. $result = $conn->query($sql);
  15. if ($result->num_rows >= 0) {
  16. http://www.php.net/echo '<table cellspacing="0" border="1" rules="rows" bordercolor="black">';
  17. http://www.php.net/echo '<tr>
  18. <td width="100px" bgcolor="silver" align="center">ID:</td>
  19. <td width="100px" bgcolor="gray" align="center">Dane1:</td>
  20. <td width="100px" bgcolor="silver" align="center">Dane2:</td>
  21.  
  22. </tr>';
  23. while($row = $result->fetch_assoc()) {
  24. http://www.php.net/echo '<tr>
  25. <td bgcolor="silver" align="center">' . $row["ID"]. '</td>
  26. <td bgcolor="gray" align="center">' . $row["wilgotnosc"].'</td>
  27. <td bgcolor="silver" align="center">' . $row["tempOUT"]. "</td>
  28.  
  29. </tr>";
  30. }
  31. http://www.php.net/echo "</table>";
  32. } else {
  33. http://www.php.net/echo "0 results";
  34. }
  35. $conn->close();
  36. ?>
  37. </body>
  38. </html>


Kod błędu:
Kod
2018-07-21 09:37:26: (log.c.164) server started
2018-07-21 09:38:28: (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: PHP Notice:  Undefined index: a in /var/www/html/add.php on line 13
2018-07-21 09:38:28: (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: PHP Notice:  Undefined index: b in /var/www/html/add.php on line 14
2018-07-21 09:38:28: (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: PHP Notice:  Undefined index: c in /var/www/html/add.php on line 15
2018-07-21 09:38:28: (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: PHP Notice:  Undefined index: d in /var/www/html/add.php on line 16
2018-07-21 09:38:28: (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: PHP Notice:  Undefined index: e in /var/www/html/add.php on line 17
2018-07-21 09:40:00: (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: PHP Parse error:  syntax error, unexpected 'silver' (T_STRING), expecting ',' or ';' in /var/www/html/test.php on line 30

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)