Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Problem z insertem
slawek3422
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


Witam.
Mój problem jest z pewnością prosty do rozwiązania, ale jakoś mam zaćmę i nie potrafię wpaść na rozwiązanie.

do skryptu pobieram wartości do zmiennych:

  1. <?php
  2. $id_wyrobiska = $_GET['id_wyrobiska'];
  3. $id_rodzaju_strzelania = $_GET['id_rodzaju_strzelania'];
  4. $data = $_GET['data'];
  5. $ilosc_materialu = $_GET['ilosc_materialu'];
  6. $ilosc_otworow = $_GET['ilosc_otworow'];
  7. $id_uzytkownika = $_GET['id_uzytkownika'];
  8. ?>


zmienne zawierające ID są to liczby, w bazie danych, do której chcę je zapisać kolumny są typu INT, tak samo jak ilosc_materialu i ilosc_otworow

Zapis do bazy odbywa się tylko gdy zmienne id_wyrobiska, id_rodzaju_strzelania, id_uzytkownika nie są puste, problem jest podczas zapisu do bazy wtedy gdy użytkonik nie podaje ilości materiału lub ilości otworów. MySQL się rzuca

  1. <?php
  2. 1366: Incorrect integer value: '' for column 'ilosc_materialu' at row 1
  3. ?>


Jak zrobić zapis do bazy gdy po drodze wpada mi wartość NULL ?

To nie dziala : sad.gif
  1. <?php
  2. $query = mysql_query("INSERT INTO strzelanie (id_wyrobiska, id_rodzaju_strzelania, data, ilosc_materialu, ilosc_otworow, id_uzytkownika) VALUES ('$id_wyrobiska', '$id_rodzaju_strzelania', '$data', '$ilosc_materialu', '$ilosc_otworow', '$id_uzytkownika');");
  3. ?>


Ten post edytował slawek3422 27.05.2009, 20:05:29
Go to the top of the page
+Quote Post
polishmilk
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 27.04.2007

Ostrzeżenie: (0%)
-----


Nie znam się aż tak bardzo ale czy masz id_wyrobiska ustawione na auto_increment ? czy jak tworzyłeś tą tabelę zaznaczyłeś opcję 'NULL'(podejrzewam że robiłeś w phpmyadmin). i zamiast ręcznie wpisywać id_wyrobiska zrób coś takiego:
  1. <?php
  2. $query = mysql_query("INSERT INTO strzelanie (id_wyrobiska, id_rodzaju_strzelania, data, ilosc_materialu, ilosc_otworow, id_uzytkownika) VALUES ('', '$id_rodzaju_strzelania', '$data', '$ilosc_materialu', '$ilosc_otworow', '$id_uzytkownika');");
  3. ?>
Go to the top of the page
+Quote Post
Pilsener
post
Post #3





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


A dlaczego nie użyjesz w zapytaniu tylko tych elementów, które są zawarte w $_GET?

Wartości robisz prosto:

  1. <?php
  2. $czesc_zapytania = "VALUES('".join("','",$_GET)."')";
  3. ?>


A nazwy pól wyciągasz z GET funkcją array_keys i scalasz na podobnej zasadzie.
Poza tym dane przesyła się POST'em.

Możesz jeszcze zrobić rzutowanie:
  1. <?php
  2. $ilosc_materialu = (int)$_GET['ilosc_materialu'];
  3. ?>


Lub dać warunek, że jak zmienna jest pusta lub = 0 (funckja empty) to przypisujesz jej wartość NULL.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:39