Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak wstawiać NULL do bazy MySQL z polami UNIQUE
MaryonD
post 31.10.2012, 10:21:33
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.10.2012

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


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.";


Ten post edytował MaryonD 31.10.2012, 10:30:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
mmmmmmm
post 31.10.2012, 10:47:52
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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
Go to the top of the page
+Quote Post
MaryonD
post 31.10.2012, 11:13:12
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.10.2012

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


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.
Go to the top of the page
+Quote Post
Damonsson
post 31.10.2012, 12:03:30
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Pamiętaj, że tego NULL'a musisz przesyłać bez cudzysłowów.

INSERT INTO towary (pole, pole2, pole3) VALUES ( 'wypelnione', 'wypelnioneinaczej', NULL )

Ten post edytował Damonsson 31.10.2012, 12:04:34
Go to the top of the page
+Quote Post
MaryonD
post 31.10.2012, 12:26:23
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.10.2012

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


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.
Go to the top of the page
+Quote Post
IProSoft
post 31.10.2012, 13:03:45
Post #6





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


  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.

Ten post edytował IProSoft 31.10.2012, 13:10:19


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
MaryonD
post 31.10.2012, 13:38:31
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.10.2012

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


Super! Dzięki smile.gif
Go to the top of the page
+Quote Post
mmmmmmm
post 31.10.2012, 18:45:42
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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.
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 Wersja Lo-Fi Aktualny czas: 5.07.2025 - 10:06