19. maj 2008 - 15:42Der er
5 kommentarer og 1 løsning
SQL get max ID
Hej
Vi har brug for at få hentet loginId fra en tabel ind i en anden tabel sammen med en masse andet, og mener at en SQLiSQL-løsning er den rette måde at gøre det på. se eks:
den nederste select max's værdi skal så indsættes i kolonnen login i medlemTabel, men i alt vores rod med paranteser og gåseøjne er der vist gået noget galt... eller er vi bare helt forkert på den med vores SQL?
en lille smule hjælp ville ihvertfald være dejligt! .
Der er noget rod i det ja. F.eks. skal denne: strSQL1 += "(SELECT MAX(loginId) FROM loginTabel)" + "')"; nok ikke slutte på " + "')"; men bare på )"; Dvs.: strSQL1 += "(SELECT MAX(loginId) FROM loginTabel))";
Den rette måde at gøre det på er at bruge databasens funktioner til at hente det senest auto-genererede ID. Den nøjagtige SQL afhænger af hvilken database I bruger - eks. er det SELECT LAST_INSERT_ID() på MySQL, mens MSSQL bruger SELECT SCOPE_IDENTITY() eller SELECT @@IDENTITY (de to til MSSQL virker ikke helt på samme måde, men forskellen er til jeres formål sandsynligvis uinteressant) .
Desuden bør I bruge parameters, i stedet for at indsætte tekst direkte I jeres SQL - på den måde sikrer I jer mod SQL injection, og slipper af den grund også for at escape (en ting der er og bliver en nødløsning).
Hvis problemet var at komme op med en god kandidat til aarets daarligste SQL saetning, saa er det problemet loest.
Den SQL saetning er baade unoedig kompleks og ikke flerbruger sikker (se pidgeot's indlaeg for hvordan det boer laves).
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.