Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wartosc NULL
Forum PHP.pl > Forum > Przedszkole
Luxe
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.
NuLL
  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.
dtb
$url = NULL; // bez aporstrofów
Guest
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
SongoQ
Cytat
$url = ''

To jest pusty string a nie null.

Albo pomijasz pole podczas INSERT i masz w nim domyslna wartosc NULL albo przekazujesz NULL
Guest
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...
SongoQ
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. ?>
Guest
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ć.
nospor
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.
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.