Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] & [MySQL] wstawianie wartości NULL do tabeli
Forum PHP.pl > Forum > Przedszkole
bobo1
W jaki sposób wstawić wartość NUll do tabeli?

Dane pochodzą z formularza. Jak w formularzu pole jest puste to powinna zostać wstawiona wartość NULL


CODE
$_POST['pole1'] = ($_POST['pole1']!='' ? $_POST['pole1'] : NULL) ;


Tak wygląda zapytanie

CODE
$zapytanie = "UPDATE `tabela` SET
`pole1`='".$_POST['pole1']."'
WHERE `id`='".$_GET['id']."' ";


Pole w tabeli jest typu int. Domyślna wartość NULL

Problem polega na tym, że za każdym razem wstawia się wartość 0 jak w formularzu jest puste pole.

Jak wyświtlam sobie zapytanie to wygląda ono w następujący sposób

zapytanie: UPDATE `tabela` SET `pole`='' WHERE `id`='1'

Jak rozwiązać ten problem ?
Wieviór
Według mnie, skoro w tabeli pole jest NULL, to możesz po prostu w zapytaniu nie ustawiać tego pola i domyślnie Ci się ustawi NULL.
phpion
Możesz zrobić tak jak pisze ~Wieviór.
Ja jednak wyjaśnię Ci dlaczego Twój skrypt nie działa. Zauważ jakie dostaniesz zapytanie przy danych $_GET['id']=1, $_POST['pole1'] = NULL:
  1. <?php
  2. $zapytanie = "UPDATE `tabela` SET `pole1`='".$_POST['pole1']."' WHERE `id`='".$_GET['id']."' ";
  3. ?>

W rezultacie wykona się zapytanie:
  1. UPDATE `tabela` SET `pole1`='NULL' WHERE `id`='1'

czyli w pole `pole1` zostanie wstawiony ciąg NULL (bo jest ujęty w ' więc jest traktowany jako ciąg). Aby traktować NULL jako wartość zmień:
  1. <?php
  2. $_POST['pole1'] = ($_POST['pole1']!='' ? "'".$_POST['pole1']."'" : NULL) ;
  3. ?>

oraz
  1. <?php
  2. $zapytanie = "UPDATE `tabela` SET `pole1`=".$_POST['pole1']." WHERE `id`='".$_GET['id']."' ";
  3. ?>

i wtedy otrzymasz takie zapytania:
  1. UPDATE `tabela` SET `pole1`='jakiś wpis' WHERE `id`='1'

lub
  1. UPDATE `tabela` SET `pole1`=NULL WHERE `id`='1'

Ale lepiej zrobić tak jak sugeruje Wieviór tongue.gif
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.