21. august 2003 - 12:57Der er
4 kommentarer og 1 løsning
Problemer med SQL
Hej
Jeg har lavet en stump asp der kan vise indholdet af en database på en html side. Men der skal kun vises poster tilhørende den bruger der er logget ind i systemet. Jeg bruger en session variabel med brugernavnet i min SQL streng hvilket giver følgende fejl: Expected end of statement.
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("../../../database/fotoceller.mdb") Set RS = Server.CreateObject("ADODB.Recordset") SQL = "Select ID, vogn, dato, fotocelletal1, fotocelletal2, brugernavn FROM fotocelletal WHERE brugernavn=session("brugernavn")" Set rs = Conn.Execute(SQL) Do While Not rs.EOF
Måske det hjælper at bruge enkeltplinger.. ' ' rundt om det sidste 'brugernavn' så det bliver
SQL = "Select ID, vogn, dato, fotocelletal1, fotocelletal2, brugernavn FROM fotocelletal WHERE brugernavn=session('brugernavn')"
Har du ikke også en del forskellige steder hvor du bruger brugernavn variablen. Du er sikker på at det er den samme variabel der skal bruges alle steder. WHERE klausulen virker lidt underlig synes jeg.
For lige at forklare det så du selv fanger fejlen en anden gang så var fejlen at det du sendte til db'en dette: Select ID, vogn, dato, fotocelletal1, fotocelletal2, brugernavn FROM fotocelletal WHERE brugernavn=session("brugernavn")
Databasen kender jo ikke dine sessions så derfor skulle der lige et & ind. Databasen får nu følgende forespørgsel: "Select ID, vogn, dato, fotocelletal1, fotocelletal2, brugernavn FROM fotocelletal WHERE brugernavn=kurt
Databasen tror nu at kurt er en variabel og det går ikke, detfor skal der enkeltgnyffer om kurt: "Select ID, vogn, dato, fotocelletal1, fotocelletal2, brugernavn FROM fotocelletal WHERE brugernavn='kurt'
En metode til at opdage sådanne fejl er f.eks:
SQL = "Select ID, vogn, dato, fotocelletal1, fotocelletal2, brugernavn FROM fotocelletal WHERE brugernavn=session("brugernavn")" response.write SQL ' udskriver den sql der sendes til databasen
response.end ' stopper kodeafviklingen Set rs = Conn.Execute(SQL)
Tak for forklaringen - det var rart at få en forklaring på dansk når man er nybegynder.
Synes godt om
Ny brugerNybegynder
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.