Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wartosc NULL
-Luxe-
post 17.12.2005, 16:41:52
Post #1





Goście







Mam zapytanie:
  1. <?php
  2. $query = "INSERT INTO newsy VALUES(NULL, curdate(), '$autor', '$url1', '$temat', '$tresc')";
  3. ?>

W zmiennej $url1 moja byc dwie wartosci: albo adres strony www albo wartosc NULL. Pytanie moje jest takie. W jaki sposob to zrobic zeby w przypadku gdy jakies pole input było puste to wartość $url1 przyjęło wartość NULL, a gdy jest w tym polu jakiś adres to po prostu jako wartość zmienna $url1 przyjmowała ten adres?

instrukcja ta
  1. <?php
  2. if (strlen($_POST['url']) > 1)
  3. {
  4. $url = $_POST['url'];
  5. }
  6. else
  7. {
  8. $url = 'NULL';
  9. }
  10. ?>

jest zła, gdyż $url = 'NULL'; oznacza przypisanie zmiennej $url ciągu znaków "NULL" co oznacza, że baza danych zapisuje to normalnie jakos tekst, a ja chce zeby zapisywalo to wtedy jako wartosc NULL.

Mam nadzieje, ze nie zagmatwalem.
Go to the top of the page
+Quote Post
NuLL
post 17.12.2005, 16:44:46
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


  1. <?php
  2. if (strlen($_POST['url']) > 1)
  3. {
  4. $url = $_POST['url'];
  5. }
  6. else
  7. {
  8. $url = '';
  9. }
  10. ?>

Jesli do bazy ma wrzucona pusta wartosc a to pole to varchar lub text to mozna zrobic pusta ciag znakow.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
dtb
post 17.12.2005, 16:50:42
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


$url = NULL; // bez aporstrofów


--------------------
Go to the top of the page
+Quote Post
-Guest-
post 17.12.2005, 16:57:53
Post #4





Goście







Cytat(NuLL @ 2005-12-17 15:44:46)
  1. <?php
  2. if (strlen($_POST['url']) > 1)
  3. {
  4. $url = $_POST['url'];
  5. }
  6. else
  7. {
  8. $url = '';
  9. }
  10. ?>

Jesli do bazy ma wrzucona pusta wartosc a to pole to varchar lub text to mozna zrobic pusta ciag znakow.

Jest to pole VARCHAR(200), domyslnie ustawiona ma wartosc null. Ale gdy zrobie tak jak Ty mowisz, to po prostu pole w bazie jest puste, nic w nim nie ma ale jednoczesnie pole te nie jest wtedy ustawione na NULL worriedsmiley.gif
Go to the top of the page
+Quote Post
SongoQ
post 17.12.2005, 17:01:21
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
$url = ''

To jest pusty string a nie null.

Albo pomijasz pole podczas INSERT i masz w nim domyslna wartosc NULL albo przekazujesz NULL


--------------------
Go to the top of the page
+Quote Post
-Guest-
post 17.12.2005, 17:18:31
Post #6





Goście







Cytat(SongoQ @ 2005-12-17 16:01:21)
Cytat
$url = ''

To jest pusty string a nie null.

Albo pomijasz pole podczas INSERT i masz w nim domyslna wartosc NULL albo przekazujesz NULL

Otóż właśnie nie mogę pominąć tego pola podczas INSERT, gdyż nie zawsze będę chciał przekazać temu polu wartość NULL. Zdarzy się, że będę chciał przypisać mu np wartość string "www.costam.pl". Do tego potrzebna jest instrukcja, która w przypadku TRUE przypisze temu polu wartość zmiennej, a w przypadku FALSE określi pole jako NULL. I właśnie nie mam pojęcia jaką wartość w tej instrukcji przypisać zmiennej, aby pole było NULL...
Go to the top of the page
+Quote Post
SongoQ
post 17.12.2005, 17:26:06
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


NuLL juz pisal tylko zamiast $url = 'NULL'; smile.gif

  1. <?php
  2.  
  3. if (strlen($_POST['url']) > 1)
  4. {
  5. $url = '''.$_POST['url'].''';
  6. }
  7. else
  8. {
  9. $url = 'NULL';
  10. }
  11.  
  12. $query = "INSERT INTO newsy VALUES(NULL, curdate(), '$autor', $url1, '$temat', '$tresc')";
  13.  
  14. ?>


--------------------
Go to the top of the page
+Quote Post
-Guest-
post 17.12.2005, 17:36:14
Post #8





Goście







Cytat(SongoQ @ 2005-12-17 16:26:06)
NuLL juz pisal tylko zamiast $url = 'NULL'; smile.gif

  1. <?php
  2.  
  3. if (strlen($_POST['url']) > 1)
  4. {
  5. $url = '''.$_POST['url'].''';
  6. }
  7. else
  8. {
  9. $url = 'NULL';
  10. }
  11.  
  12. $query = "INSERT INTO newsy VALUES(NULL, curdate(), '$autor', $url1, '$temat', '$tresc')";
  13.  
  14. ?>

Hmm... na pewno?
Wydaje mi się, że jednak to nie jest to o co mi chodzi. Bo przecież $url = 'NULL'; oznacza, że zmiennej $url przypisujemy text 'NULL', równie dobrze można by napisać $url = 'wlazł kotek na płotek' i sens byłby wtedy praktycznie ten sam.

przykładowo:
  1. <?php
  2.  
  3. $url = 'NULL';
  4. $query = "INSERT INTO newsy VALUES('$url')";
  5. ?>

nie będzie równoznaczne z:
  1. <?php
  2.  
  3. $query = "INSERT INTO newsy VALUES('NULL')";
  4. ?>


Jeśli się mylę, proszę mnie poprawić.
Go to the top of the page
+Quote Post
nospor
post 17.12.2005, 17:39:52
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To co dostales od SongoQ to dobre rozwiązanie. W przypadku gdy pole bedzie puste, do zapytania wstawi sie NULL, ale bez cudzyslowi, co w efekcie da wartosc null dla pola. Gdy pole nie jest puste, dodane mu zostaną apostrofy, przez co mysql wczyta to jako text.

Jak nie wierzysz to se wygeneruj oba zapytania i zoabcz sam.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 20.07.2025 - 14:56