Avatar billede Slettet bruger
06. januar 2004 - 12:58 Der er 28 kommentarer og
1 løsning

Sætte variabel til NULL

Hvordan sætter jeg en variabel til NULL.

$test = ??????
Avatar billede nak-m Nybegynder
06. januar 2004 - 13:01 #1
$test = null;
Avatar billede Slettet bruger
06. januar 2004 - 13:04 #2
nak-m...> Enten er det mig der bruger en forkert syntaks, eller også fungerer det ikke.

$formfelt[0] = "Peter";
$test = null;
mysql_query("UPDATE medlemmer SET mobil='$test', fornavn="'$formfelt[0]' WHERE medlemsnr=$medlemsnr");
Avatar billede Slettet bruger
06. januar 2004 - 13:05 #3
Når jeg kører query'en, får jeg et nul (cifret) i feltet mobil.
Avatar billede sone Nybegynder
06. januar 2004 - 13:07 #4
$test = 'null';
Avatar billede nak-m Nybegynder
06. januar 2004 - 13:08 #5
Avatar billede nak-m Nybegynder
06. januar 2004 - 13:09 #6
kfisker: hvad havde du forventet?
sone: det skal jo nok ikke være en streng :) eller skal det kfisker?
Avatar billede sone Nybegynder
06. januar 2004 - 13:11 #7
Som jeg læser det, så skal slutresultatet blive:
UPDATE medlemmer SET mobil=null, fornavn="'$formfelt[0]' WHERE medlemsnr=$medlemsnr

Altså:
$test = 'null';
+ fjern ' om $test i sql
Avatar billede nak-m Nybegynder
06. januar 2004 - 13:13 #8
sone:
hvorfor ikke bare mobil='$test' ligesom fisker gjorde? :)
Avatar billede Slettet bruger
06. januar 2004 - 13:14 #9
nak-m...> Det er korrekt at det ikke skal være en streng.

Et nyt medlem, hvor mobilfeltet ikke udfyldes under oprettelse, indeholder værdien NULL hvis jeg kigger i tabellen via PHPMYADMIN.

Hvis jeg via en form, udfylder mobil-feltet, og gemmer det, for herefter at slette mobilnummeret, får feltet værdien "0".
Avatar billede nak-m Nybegynder
06. januar 2004 - 13:19 #10
hvad med at sige:

mysql_query("UPDATE medlemmer SET mobil=NULL, fornavn="'$formfelt[0]' WHERE medlemsnr=$medlemsnr");
Avatar billede nak-m Nybegynder
06. januar 2004 - 13:20 #11
altså hvor du bare bruger mysql's null
Avatar billede detox Nybegynder
06. januar 2004 - 13:20 #12
Jeg vil osse mene:

$test = 'null';
mysql_query("UPDATE medlemmer SET mobil=$test    , fornavn='$formfelt[0]' WHERE medlemsnr=$medlemsnr");

Du har forøvrigt en " for meget her: fornavn="'$formfelt[0]'
Skal være: fornavn='$formfelt[0]'
Avatar billede Slettet bruger
06. januar 2004 - 13:24 #13
detox og nak-m...>
Jeg har forenklet det hele lidt, for at undgå for lange forklaringer, men det bliver vist nødvendigt nu.

Min sql-forespørgsel indeholder
Avatar billede Slettet bruger
06. januar 2004 - 13:26 #14
Hmmm... ups...

Min kode ser sådan her ud (uddrag):

foreach ($formfeltclean as $value =>$key)
  {
    if ($formfeltclean[$value] == "")
      {
        $formfeltclean[$value] = null;
      }
  }

mysql_query("UPDATE medlemmer SET navn='$formfeltclean[0]', email='$formfeltclean[1]', mobil='$formfeltclean[2]', fastnet='$formfeltclean[3]', beskrivelse='$formfeltclean[4]' WHERE spillernr=$spillernr");

Når en coadmin retter i en spillers data, kommer der 5 felter, hvor jeg så checker om nogle af felterne er blanke.
Er et enkelt felt blankt, vil jeg gerne have lige netop dette felt til at være NULL.
Avatar billede detox Nybegynder
06. januar 2004 - 13:32 #15
Skal vel så være:

foreach ($formfeltclean as $value =>$key)
  {
    if ($formfeltclean[$value] == "")
      {
        $formfeltclean[$value] = 'null';
      }
  }
Avatar billede Slettet bruger
06. januar 2004 - 13:37 #16
detox...> Samme resultat som uden ''.
Avatar billede detox Nybegynder
06. januar 2004 - 13:48 #17
Så prøv:

foreach ($formfeltclean as $value =>$key)
  {
    if ($formfeltclean[$value] == "")
      {
        $formfeltclean[$value] = 'null';
      }
    else
      {
        $formfeltclean[$value] = "'$key'";
      }
  }

mysql_query("UPDATE medlemmer SET navn=$formfeltclean[0], email=$formfeltclean[1], mobil=$formfeltclean[2], fastnet=$formfeltclean[3], beskrivelse=$formfeltclean[4] WHERE spillernr=$spillernr");
Avatar billede Slettet bruger
06. januar 2004 - 13:54 #18
detox....>
Forstår ikke lige hvad det skulle hjælpe??

Hvis et formfelt er tomt sættes den til nøjagtig samme værdi?
Avatar billede Slettet bruger
06. januar 2004 - 13:57 #19
detox...> Fantastisk... det virker.

Kan du så lige hjælpe med at forklare hvorfor det så er det fungerer?
Avatar billede Slettet bruger
06. januar 2004 - 14:00 #20
... og smid et svar så du kan få dine velfortjente point :o)
Avatar billede detox Nybegynder
06. januar 2004 - 14:01 #21
Problemet er jo at du skal bruge apostroffer ved indsættelse af værdier og ikke ved NULL. Så løsningen var at tilføje apostroffer til dine variabler og helt fjerne dem i query'en.
Avatar billede detox Nybegynder
06. januar 2004 - 14:02 #22
Jep c",)
Avatar billede sone Nybegynder
06. januar 2004 - 14:04 #23
"Tak" siger man så... ergo den løsning jeg skrev kl. 13:11:39 :(
Avatar billede Slettet bruger
06. januar 2004 - 14:04 #24
Hmmm... er det bare mig, eller er der ikke en simpel måde at lave disse queries på, uden at skulle være ekspert til at bruge alle mulige former for apostrofer...???
"
'
´
`

Hvordan er det lige man ved hvad man skal bruge hvor, og mindst lige så vigtig, hvad man IKKE skal bruge hvor?
Avatar billede sone Nybegynder
06. januar 2004 - 14:05 #25
Rimelig simpelt: Tekst skal i apostrofer, alt andet skal ikke
Avatar billede Slettet bruger
07. januar 2004 - 13:09 #26
sone...> Er det så ligegyldig hvorfor nogle apostroffer teksten kommer i?
Avatar billede detox Nybegynder
07. januar 2004 - 13:36 #27
Der findes nu kun en slags apostrof: '
men du kan osse bruge 'gåseøjne': "
Avatar billede sone Nybegynder
07. januar 2004 - 15:52 #28
detox >> men du kan osse bruge 'gåseøjne': "

Ikke i alle DB systemer - f.eks. ikke i Oracle, så brug ' - så er SQL'erne fremtidssikrede.
Avatar billede detox Nybegynder
07. januar 2004 - 16:00 #29
sone -> Ok, det er sikkert en god vane at nøjes med ' så :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester