![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzień Dobry.
Mam takie zapytanie: Kod $q = "INSERT INTO awizo ( IDFirmy,Kierowca, $reszta CzasStart) VALUES ( '$IDFirmy','$Kierowca', \"$reszta2\" '$CzasStart')"; Chciałbym, aby tworzyło się ono dynamicznie o zmienne $reszta i $reszta2 Zrobiłem coś takiego: Kod $reszta = ''; $reszta2 = ''; $KierowcaTelefon = '604123123'; $NrRejestracyjny = 'WE12312'; if (!empty($KierowcaTelefon)) { $reszta = 'KierowcaTelefon,'; $reszta2 = '$KierowcaTelefon,';} else { $reszta = ''; $reszta2 = ''; }; if (!empty($NrRejestracyjny)) { $reszta = 'NrRejestracyjny,'; $reszta2 = '$NrRejestracyjny,';} else { $reszta = ''; $reszta2 = ''; }; Zmienna $reszta generuje się dobrze i poprawnie dodawana jest do zapytania. Problem jest ze zmienną $reszta2. Po wywołaniu zapytania mam: Kod INSERT INTO awizo ( IDFirmy,Kierowca, KierowcaTelefon,NrRejestracyjny, CzasStart ) VALUES ( '3','Adam', "$KierowcaTelefon,$NrRejestracyjny" '2016-03-18 18:00:00') Jak to powinno wyglądać, aby poprawnie wstawiał wyniki zmiennych $KierowcaTelefon, $NrRejestracyjny do zapytania. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Podstawy php.
'' - zwraca ciąg bez parsowania. "" - przetwarza |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Podstawy php. '' - zwraca ciąg bez parsowania. "" - przetwarza Masz rację, już poprawiłem i działa. Myślałem, że to będzie coś innego, bo wczoraj próbowałem i mi nie szło. Kod $q = "INSERT INTO awizo (
IDFirmy,Kierowca, $reszta CzasStart) VALUES ( '$IDFirmy','$Kierowca', $reszta2 '$CzasStart')"; $reszta = ''; $reszta2 = ''; $KierowcaTelefon = '604123123'; $NrRejestracyjny = 'WE12312'; if (!empty($KierowcaTelefon)) { $reszta = 'KierowcaTelefon,'; $reszta2 = "'KierowcaTelefon',";} else { $reszta = ''; $reszta2 = ''; }; if (!empty($NrRejestracyjny)) { $reszta = 'NrRejestracyjny,'; $reszta2 = "'NrRejestracyjny',";} else { $reszta = ''; $reszta2 = ''; }; |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Przypisujesz na sztywno
A później sprawdzasz czy te zmienne NIE są puste - a wiadomo, że nie będą, więc po co w ogóle ten warunek? To tylko dla przykładu (IMG:style_emoticons/default/smile.gif) Zmienne pobierane są przez $_POST |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pamiętaj żeby to zabezpieczyć najlepiej przez prepared statements.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
A po co w tych wartościach, które będziesz INSERTował jest przecinek? No i wg mnie zapytanie powinno wyglądać tak:
No i to jest niczym nie zabezpieczone, polecam skorzystać z PDO. Ten post edytował Salvation 18.03.2016, 12:03:22 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A po co w tych wartościach, które będziesz INSERTował jest przecinek? No i wg mnie zapytanie powinno wyglądać tak:
No i to jest niczym nie zabezpieczone, polecam skorzystać z PDO. Dane z post mam tak: Kod $KierowcaTelefon = strip_tags($_POST['KierowcaTelefon']); Zrobiłem to jak wyżej, aby skracał zapytanie jeśli jakaś zmienna jest pusta. W bazie pola mam ustawione domyślnie jako NULL. Próbowałem wcześniej tak: Kod $KierowcaTelefon = strip_tags($_POST['KierowcaTelefon']); $NrRejestracyjny = strip_tags($_POST['NrRejestracyjny']); if (empty($KierowcaTelefon)) { $KierowcaTelefon = NULL; }; if (empty($NrRejestracyjny)) { $NrRejestracyjny = NULL; }; $q = "INSERT INTO awizo ( IDFirmy,Kierowca,KierowcaTelefon,NrRejestracyjny,CzasStart) VALUES ( '$IDFirmy','$Kierowca','$KierowcaTelefon','$KierowcaTelefon','$CzasStart')"; Ale wstawia do bazy NULL jako teks a nie definiuje tego pola jako NULL. Próbowałem też tak: Kod '$IDFirmy','$Kierowca',$KierowcaTelefon,$KierowcaTelefon,'$CzasStart')"; ale głupieje jak są spacje. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jak są puste, to po prostu nie podawaj ich w zapytaniu, wtedy będziesz miał wartość NULL z MySQL.
Popatrzyłem na kod (ten pierwszy) jeszcze raz. I zauważyłem pewny błąd składniowy. Konkretnie to ten fragment kodu: Skoro potrzebujesz ten przecinek tam, to powinien on wyglądać tak: Ten post edytował Salvation 19.03.2016, 01:03:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:44 |