Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Databáze Access, ASP, Syntaktická chyba v příkazu UPDATE

Dobrý den všem.

Potřeboval bych poradit s příkazem UPDATE. Mám stránky v ASP a databázi Access.

  select case request.querystring("save")
  case "new"
      sql="INSERT INTO users ([login], [password], [group], [email]) VALUES('" &  strLogin & "', '" &  strPassword & "', '" &  strGroup & "', '" &  strEmail & "')"
  case "edit"
      sql = "UPDATE users SET login = '" & strLogin & "', password = '" & strPassword & "', group = '" & strGroup & "', email = '" & strEmail & "' WHERE ID = " & ID
  end select
  conn.execute(sql) 

Pokud použiji konstrukci case "new" tak se příkaz provede v pořádku a záznam se zapíše do databáze. Pokud ovšem použiji konstrukci case "edit" vypíše mi hlášku: "[Microsoft][Ovladač ODBC pro Microsoft Access] Syntaktická chyba v příkazu UPDATE."
Zjistil jsem, že pokud nechám v sql pouze

sql = "UPDATE users SET login = '" & strLogin & "', password = '" & strPassword & "' WHERE ID = " & ID

pak se příkaz provede. Testoval jsem proměnné strGroup a strEmail - zapsal jsem je do login nebo password a příkaz se provedl. Jakmile ovšem dám do sql group= nebo email= tak to spadne. Podotýkám, že zápis do databáze (INSERT INTO...) se provede.

Bude tam zřejmě nějaká kravina jenže já už do toho čumím druhý den a nic kloudného mě nenapadá. Potřeboval bych "pohled zvenku". Bude někdo ochotný a podívá se na to? Prosím.

Předmět Autor Datum
Kdyz to "spadne", tak to urcite neco napise. Mohl bys sdelit obsah toho hlaseni? Jakeho typu jsou ta…
Jan Fiala 08.02.2008 09:10
Jan Fiala
GROUP je kľúčové slovo, takže meno stĺpca "group" budeš musieť escapovať, čiže ten príkaz by mohol v…
los 08.02.2008 09:10
los
Vyřešeno. Na to klíčové slovo jsem docela zapomněl. Toto je přesně ten pohled zvenčí, který jsem pot… poslední
NagyMaros 08.02.2008 09:40
NagyMaros

GROUP je kľúčové slovo, takže meno stĺpca "group" budeš musieť escapovať, čiže ten príkaz by mohol vyzerať napr. nejako takto:

sql = "UPDATE users SET [login] = '" & strLogin & "', [password] = '" & strPassword & "', [group] = '" & strGroup & "', [email] = '" & strEmail & "' WHERE [ID] = " & ID

Vo všeobecnosti je dobré pomenovať stĺpce (a tabuľky) tak, aby sa ich mená nezhodovali so žiadnym kľúčovým slovom.

Dúfam, že vstupy máš ošetrené tak, že je to odolné voči SQL injection.

Zpět do poradny Odpovědět na původní otázku Nahoru