• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zapytanie sql jest błędne ale dane zostają zapisywane---dlaczego się tak dzieje

VPS Starter Arubacloud
0 głosów
199 wizyt
pytanie zadane 12 grudnia 2016 w PHP przez Jaroslaw Roj Obywatel (1,990 p.)
edycja 12 grudnia 2016 przez Jaroslaw Roj

otrzymuję dane przez GET-a mam taki kod

    $dbconnect = mysql_pconnect($server, $dbusername, $dbpassword);
    $dbselect = mysql_select_db("test",$dbconnect);


    // Prepare the SQL statement


	
    $sql = "INSERT INTO test.sensor (value,value2,value3,value4,value5)
	VALUES ('".$_GET["wewn"]."', '".$_GET["piec"]."', '".$_GET["zew"]."',  '".$_GET["humid"]."', '".$_GET["jasno"]."')"; 
  

   

    mysql_query($sql);

i dostaję takie błędy

Notice: Undefined index: wewn in C:\xampp\htdocs\time\write_data.php on line 20

Notice: Undefined index: piec in C:\xampp\htdocs\time\write_data.php on line 20

Notice: Undefined index: zew in C:\xampp\htdocs\time\write_data.php on line 20

Notice: Undefined index: humid in C:\xampp\htdocs\time\write_data.php on line 20

Notice: Undefined index: jasno in C:\xampp\htdocs\time\write_data.php on line 20

nie wiem co jest tam źle, prosiłbym o jakieś porady

1 odpowiedź

0 głosów
odpowiedź 12 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)
Błędy wyraźnie przecież mówią co jest źle. W tablicy $_GET nie ma indeksów do jakich się odwołujesz, czyli prosto mówiąc w pasku adresu nie ma takich danych. Nie wiem czy wysyłasz z formularza czy skąd, ale to w zasadzie nieistotne, po prostu indeksy tablicy $_GET jakie chcesz odczytać nie istnieją.

PS funkcje zaczynające się od mysql_ już nie istnieją, a tworzenie zapytania w taki sposób jak ty to robisz to proszenie się o kłopoty (brak zabezpieczenia przed sql injection).
komentarz 12 grudnia 2016 przez Jaroslaw Roj Obywatel (1,990 p.)
wiem ze to jest przestarzałe ,tablicy $_GET nie ma indeksów , ale do bazy są zapisywany poprawne dane tzn temperatury idt, tylko dlaczego się tak dzieje
komentarz 12 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)

Napisałem i sam to powtórzyłeś:

tablicy $_GET nie ma indeksów

A dlaczego tak się dzieje to już nie wiem, to pytanie do Ciebie. Może zapytanie powinno wykonać się tylko po wysłaniu formularza, może po kliknięciu w jakiś link? Może masz jakiś inny błąd? Nie wiem, nie znam Twojego kodu i tego co robisz, błąd powoduje to, że w momencie wykonania skryptu nie ma podanych danych w adresie i nie ma ich przez to w tablicy $_GET. 

komentarz 12 grudnia 2016 przez Jaroslaw Roj Obywatel (1,990 p.)

dane są wysyłane z arduino na localhost

client.print("GET /time/write_data.php?wewn="); // This
    // Watrość jest przesylana
    client.print(sensors.getTempCByIndex(0));
    client.print("&&piec="); // problem nr1
    client.print(sensors.getTempCByIndex(1));
    client.print("&&zew="); // problem nr 2
    client.print(sensors.getTempCByIndex(2));
    client.print("&&humid=");
    client.print(h);
    client.print("&&jasno=");
    client.print(licht);
    client.println(" HTTP/1.1"); // Part of the GET request
    client.println("Host: localhost"); // IMPORTANT: If you are using XAMPP you will have to find out the IP address of your computer and put it here (it is explained in previous article). If you have a web page, enter its address (ie.Host: "www.yourwebpage.com")
    client.println("Connection: close")

 

komentarz 12 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)
Ciężko mi powiedzieć czy jest to dobrze. Nie działałem zbyt dużo w Arduino, a przy wysyłaniu czegoś do serwera w ogóle.
1
komentarz 12 grudnia 2016 przez efiku Szeryf (75,160 p.)

Pasowałoby poczytać jak wygląda protokół http ;) 

&&piec=

Nie powinno być czasem?

&piec=

 

Pominę już fakt, że używasz przestarzałych funkcji, wręcz nie istniejących, nie sprawdzasz czy formularz został poprawnie przesłany ... więc są błędy notice. I nigdy nie powinieneś nazywać kolumn: value1,value2,value3,value4. Tak jak w pracy masz BHP tak w programowaniu są zasady pisania zrozumiałego kodu:) by żyło nam się lepiej.

nie lepiej tak? ;) https://gist.github.com/efiku/fa2f0eb5d7a1dd60d80618519ed018d8

 

 

Podobne pytania

0 głosów
1 odpowiedź 276 wizyt
0 głosów
1 odpowiedź 157 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...