Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak wstawiać NULL do bazy MySQL z polami UNIQUE
Forum PHP.pl > Forum > Przedszkole
MaryonD
Witam. Mój formularz dopuszcza puste pola w formularzu. Jeśli takie wystąpią chciałbym aby do bazy dodawał rekord NULL.
Problem w tym, że kolumny są typu UNIQUE i za drugim razem już nie pozwala mi pozostawić pustego pola w formularzu. Z góry dziękuje!

..

$pole=$_POST['pole'];
$pole2=$_POST['pole2'];
$pole3=$_POST['pole3'];

..

$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( '$pole', '$pole2', '$pole3' )");
if($ins) echo "Rekord został dodany poprawnie";
else echo "Błąd nie udało się dodać nowego rekordu.";
mmmmmmm
Bo nie wstawiasz tam NULLi, tylko wartości puste.
  1. if(isset($_POST['pole']))$pole="'".$_POST['pole']."'";else $pole='Null';
  2. if(isset($_POST['pole2']))$pole2="'".$_POST['pole2']."'";else $pole2='Null';
  3. if(isset($_POST['pole3']))$pole3="'".$_POST['pole3']."'";else $pole3='Null';
  4.  
  5. //...
  6.  
  7. $ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( $pole, $pole2, $pole3 )");
  8. if($ins) echo "Rekord został dodany poprawnie";
  9. else echo "Błąd nie udało się dodać nowego rekordu.";

Poza tym nie ma typu UNIQUE smile.gif
MaryonD
Zrobiłem według zaleceń, ale efekt mam ten sam. Czyli wstawia mi teraz puste pole do tabeli, ale drugi raz już na to nie pozwoli.
CO do typu UNIQUE to chodzi mi o to, że w tabeli nie mogą mi sie powtarzać dwa takie same rekordy z formularza, OPRÓCZ właśnie tych pól pustych czy NULL, które powstają z pustych niewypełnionych pól w formularzu.
Damonsson
Pamiętaj, że tego NULL'a musisz przesyłać bez cudzysłowów.

INSERT INTO towary (pole, pole2, pole3) VALUES ( 'wypelnione', 'wypelnioneinaczej', NULL )
MaryonD
Po zmianach mam coś takiego:

if(isset($_POST['pole'])) {
$pole=NULL;
}
else {
$pole=$_POST['pole'];
}

var_dump($pole); //Tutaj ładnie pokazuje mi NULL (nie jako string, tylko właściwie jako pusty rekord)

$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( $pole, $pole2, $pole3)"); //Jeśli dam w ten sposób bez ' ' to skrypt nie działa.
Nie moge dać na sztywno VALUES ( NULL, $pole2, $pole3) ponieważ nie zawsze to pole jest puste, zależy to od wpełnienia formularza.
IProSoft
  1. $ins = mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( ".( empty($pole) ? 'NULL' : "'".$pole."'" ).", $pole2, $pole3)");


I nie używaj @ przy czymkolwiek, jeśli jest błąd, napraw go.
MaryonD
Super! Dzięki smile.gif
mmmmmmm
Cytat(MaryonD @ 31.10.2012, 12:26:23 ) *
$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( $pole, $pole2, $pole3)"); //Jeśli dam w ten sposób bez ' ' to skrypt nie działa.

A teraz się cofnij i zobacz, co ci napisałem.
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.