webForumDet fria alternativet

Fel med sql

7 svar · 171 visningar · startad av dahlgren

dahlgrenMedlem sedan aug. 20011 442 inlägg
#1
Uppdatera = "UPDATE login SET adress = '" & Request.Form("adress") & "', telhem = '"& Request.Form("telhem") & _
  "', mobil = '" & Request.Form("mobil") & "', email = '" & Request.Form("email") & _
  "', icq = " & Request.Form("icq") & ", msn = '" & Request.Form("msn") & _
  "' WHERE ID = " & Request.Form("dold")

Koden ovan har fungerat tidigare men just nu ger den fel om jag försöker uppdatera med tomma värden trots att det är tillåtet med null i databasen.
Om jag skriver ut sql-satsen så ger det:
UPDATE login SET adress = '', telhem = '', mobil = '', email = '', icq = , msn = '' WHERE ID = 17 som i mina ögon ser korekt ut men om jag försöker köra den får jag följande medelande. Någon som vet vad som är fel?

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ' msn = '' WHERE ID = 17' at line 1

PeeerMedlem sedan mars 20025 362 inlägg
#2

icq-fältet felar lite skulle jag tro. Kör en replace på request.form("icq") så att det blir null om värdet saknas från formuläret.

tydalMedlem sedan juni 20033 788 inlägg
#3

Du har inte apostrofer runt icq.

dahlgrenMedlem sedan aug. 20011 442 inlägg
#4

Borde vara utan appostrofer då det är av typen int.

PeeerMedlem sedan mars 20025 362 inlägg
#5

Då måste du köra med null som sagt;
icq = null

LeonLMedlem sedan dec. 20023 175 inlägg
#6

Det får inte vara helt tomt som:

Kod som inte funkar skrev:

icq = , msn = ''

Du måste köra en If-sats, som Peeer säger, och kolla om fältet är tomt. Om fältet är tomt ska det stå NULL som parameter.

Kod som funkar skrev:

icq = NULL, msn = ''

r\ Peeer han före. Borde kanske inte ha lagt mig i. ;)

dahlgrenMedlem sedan aug. 20011 442 inlägg
#7

Precis som tydal skrev skanades apostrofer. Jag också fel det var ingen int.

tydalMedlem sedan juni 20033 788 inlägg
#8

I Mysql kan man ha apostrofer runt int. Det är bra att ha det utifall man skulle glömma att kontrollera så variabeln enbart innehåller siffror.

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb