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ć
Problemem jest skrypt który znalazłem (a sam nie umiem napisać ), mianowicie za każdym razem dostaje komunikat: "Connection failed: Connection refused"
skrypt poniżej:
<?php $servername = "ADRES"; //Adres serwera MySQL $username = "NAZWA"; //Nazwa konta użytkownika MySQL $password = "HASLO"; //Hasło do konta użytkownika MySQL $dbname = "NAZWA"; //Nazwa bazy danych $conn = new mysqli($servername, $username, $password, $dbname); //Utworzenie połączenia z MySQL if ($conn->connect_error) { //Sprawdzenie połączenia z MySQL http://www.php.net/die("Connection failed: " . $conn->connect_error); //Wyświetlenie informacji o problemie z połączeniem } $a = $_GET["a"]; //Odebranie danych wysłanych przez ESP $b = $_GET["b"]; //Odebranie danych wysłanych przez ESP $c = $_GET["c"]; $d = $_GET["d"]; $e = $_GET["e"]; $sql = "INSERT INTO DOM (wilgotnosc, tempOUT, odczuwalna, cisnienie, tempIN) VALUES ('$a', '$b', '$c', '$d', '$e')"; //W pierwszej lini następuje zdefiniowanie nazwy tabeli oraz kolumn do których mają zostać dodane dane //a w drugiej definiowanie danych które zostaną dodane to tabeli // Można to polecenie także zapisać w formie jednej lini ale polecam pozostać przy zapisie w dwóch liniach ponieważ jest bardziej przejrzysty // $sql = "INSERT INTO test (Dane1, Dane2) VALUES ('$a', '$b')"; if ($conn->query($sql) === TRUE) { //Sprawdzenie czy dane zostały poprawnie dodane do tabeli http://www.php.net/echo "Rekord zostal dodany poprawnie!"; //Wyświetlenie komunikatu o powodzeniu } else { http://www.php.net/echo "Error: " . $sql . "<br>" . $conn->error; //Wyświetlenie komunikatu o niepowodzeniu wraz z informacjami na temat błędu } $conn->close(); //Zamknięcie połączenia z MySQL ?>
W linii 16 masz SQL injection. http://fi2.php.net/manual/en/mysqli.prepare.php
Problemem był zły adres bazy danych
ale teraz mam inny problem, z odczytaniem wartości w mojej bazie danych, ktoś coś podpowie ? Serwer zwraca HTTP ERROR 500
<html> <head> <title>Tutorial</title> </head> <body> <?php $servername = "ADRES"; $username = "NAZWA"; $password = "HASLO"; $dbname = "NAZWA"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) {http://www.php.net/die("Connection failed: " . $conn->connect_error);} $sql = "SELECT id, wilgotnosc, tempOUT, odczuwalna, cisnienie, tempIN, FROM DOM ORDER BY id DESC LIMIT 10000"; $result = $conn->query($sql); if ($result->num_rows > 0) { http://www.php.net/echo '<table cellspacing="0" border="1" rules="rows" bordercolor="black">'; http://www.php.net/echo '<tr> <td width="100px" bgcolor="silver" align="center">Numer:</td> <td width="100px" bgcolor="gray" align="center">Wilgotnosc:</td> <td width="100px" bgcolor="silver" align="center">Temperatura Zewnetrzna:</td> <td width="100px" bgcolor="gray" align="center">Temperatura Odczuwalna:</td> <td width="100px" bgcolor="silver" align="center">Cisnienie:</td> <td width="100px" bgcolor="gray" align="center">Temperatura Wewnatrz:</td> </tr>'; while($row = $result->fetch_assoc()) { http://www.php.net/echo '<tr> <td bgcolor="silver" align="center">' . $row["id"]. '</td> <td bgcolor="gray" align="center">' . $row["wilgotnosc"].'</td> <td bgcolor="silver" align="center">' . $row["tempOUT"]. "</td> <td bgcolor="gray" align="center">' . $row["odczuwalna"]. "</td> <td bgcolor="silver" align="center">' . $row["cisnienie"]. "</td> <td bgcolor="gray" align="center">' . $row["tempIN"]. "</td> </tr>"; } http://www.php.net/echo "</table>"; } else { http://www.php.net/echo "0 results"; } $conn->close(); ?> </body> </html>
Sprawdź error log apacha i wklej tu błąd.
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.
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ę !
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:
<html> <head> <title>Tutorial</title> </head> <body> <?php $servername = ""; $username = ""; $password = ""; $dbname = ""; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) {http://www.php.net/die("Connection failed: " . $conn->connect_error);} $sql = "SELECT ID, wilgotnosc, tempOUT, odczuwalna FROM DOM ORDER BY id ASC LIMIT 100"; $result = $conn->query($sql); if ($result->num_rows >= 0) { http://www.php.net/echo '<table cellspacing="0" border="1" rules="rows" bordercolor="black">'; http://www.php.net/echo '<tr> <td width="100px" bgcolor="silver" align="center">ID:</td> <td width="100px" bgcolor="gray" align="center">Dane1:</td> <td width="100px" bgcolor="silver" align="center">Dane2:</td> </tr>'; while($row = $result->fetch_assoc()) { http://www.php.net/echo '<tr> <td bgcolor="silver" align="center">' . $row["ID"]. '</td> <td bgcolor="gray" align="center">' . $row["wilgotnosc"].'</td> <td bgcolor="silver" align="center">' . $row["tempOUT"]. "</td> </tr>"; } http://www.php.net/echo "</table>"; } else { http://www.php.net/echo "0 results"; } $conn->close(); ?> </body> </html>
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)