Problem z INSERT INTO

0

Witam,

Mam mały (mam nadzieję) problem z jednym z zapytań do bazy danych. Otóż chciałbym dodać następujący wiersz:

mysql_query("INSERT INTO `patients` (`personnel_id`, `PESEL`, `name`, `lastname`, `height_cm`, `weight_kg`) 
							VALUES (
								".$_POST['userid'].", 
								".$_POST['pesel'].",
								".$_POST['firstname'].", 
								".$_POST['lastname'].", 
								".$_POST['height'].", 
								".$_POST['weight'].")")
		or die(mysql_error());

Wszystkie zmienne przekazywane metodą POST są wypełnione. Błąd jaki otrzymuje to:

Unknown column 'Hieronim' in 'field list'

Dotyczy on imienia i przeglądając posty wyszukane za pomocą Google'a dowiedziałem się (chyba), że błąd ten polega na tym, iż baza nie odczytuje wrzucanej wartości jako string.

Proszę o pomoc.

1

Wszystkie stringi w zapytaniu musisz otoczyć cudzysłowem lub apostrofem.

.... VALUES ('".$_POST['userid']."', .... 

Czyli wstawiasz apostrof, żeby zapytanie do bazy miało postać - VALUES ('Hieronim' - , a następnie cudzysłów, żeby zamknąć stringa i wstawić wartość.

Tak czy inaczej - polecam używanie PDO. W obecnej formie narażasz się na poważne luki.

0

Właśnie próbowałem te apostrofy jakoś wcisnąć i nie wiedziałem jak ;)
Wielkie dzięki, problem rozwiązany ;)

0

Kod = porażka. KLIK!

0
dzek69 napisał(a):

Kod = porażka. KLIK!

Może tak. Ale jeśli użył mysql_real_escape_string i obleci apostrofami integer'y to mu chyba nie wsadzą injectiona? :P

0

A wiesz, że użył? Ja nie sądzę, skoro nie potrafi jeszcze napisać jednego zapytania SQL. Zresztą escapowanie danych bezpośrednio w tablicach superglobalnych to też porażka (robiłem tak na początku nauki php, wynika z tego potem trochę problemów).

0
dzek69 napisał(a):

A wiesz, że użył? Ja nie sądzę, skoro nie potrafi jeszcze napisać jednego zapytania SQL. Zresztą escapowanie danych bezpośrednio w tablicach superglobalnych to też porażka (robiłem tak na początku nauki php, wynika z tego potem trochę problemów).

No tak, zgadzam się :) Dlatego poradziłem używanie PDO :)

0

Z zapytaniami SQL jakoś sobie radzę. Owszem, przygodę z PHPem, co wiążę się z częstym łączeniem tych dwóch języków, dopiero zaczynam i przyjmuje wszystkie wskazówki i cenną pomoc.
Kod może i porażka, ale póki co działa. Wolę, by na początku mojej drogi nie był on może jakiś super optymalny i bezpieczny, ale ważne, żeby dał mi jakieś pojęcie o języku. Wiedza, wprawa i rutyna w stosowaniu odpowiednich reguł przyjdzie z czasem.
Jeszcze raz dzięki. Pozdro.

0

Źle. Dobre nawyki, szczególnie jeżeli chodzi o bezpieczeństwo - powinieneś wyrabiać już na samym początku. Już mniejsza z optymalizacją czy ładnym kodem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1