Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Problem z insertem
Forum PHP.pl > Forum > Przedszkole
slawek3422
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. ?>
polishmilk
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. ?>
Pilsener
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.