Avatar billede jkampmann Nybegynder
14. januar 2008 - 14:46 Der er 8 kommentarer og
2 løsninger

Ingen rækker i MySQL, så vis ikke fejl

Hej, når jeg skriver i brugernavn og kodeord (input felter), f.eks: "t" og "k", og trykker "Login"-knappen, så melder den fejl (Server Application '/')..

Men hvis jeg skriver noget som findes i MySQL, udskriver den ingen fejl.

Hvordan laver jeg en sætning som siger:

if ( mysql ikke kan finde noget )
{
    response.write("ingen brugere med det navn!");
} else {
    response.write("wee");
}
...

Har selv prøvet dette, men uden held.

cmd.CommandText = "SELECT id FROM brugere WHERE brugernavn = '" + Brugernavn.Text + "' AND kodeord = '" + Kodeord.Text + "'";
cmd.Connection = con;


if( (int)cmd.ExecuteScalar() == 0)
{
    Response.Write("nej");
} else {
    Response.Write("ja");
}
Avatar billede arne_v Ekspert
14. januar 2008 - 14:52 #1
MySqlDataReader rdr = cmd.ExecuteReader();
if(rdr.Read())
{
  // der var mindst en
}
else
{
  // der var ingen
}
Avatar billede arne_v Ekspert
14. januar 2008 - 14:52 #2
Response.Write er sjældent god ASP.NET - brug en web control
Avatar billede jkampmann Nybegynder
14. januar 2008 - 15:35 #3
Okay tak.
Web Control?
Avatar billede arne_v Ekspert
14. januar 2008 - 15:48 #4
Eksempelvis:

System.Web.UI.WebControls.Label klassen og asp:Label tagget
Avatar billede mikalj Nybegynder
15. januar 2008 - 13:34 #5
ExecuteScalar på en sql forespørgsel uden resultat vil returnere null, og du kan ikke lave en logisk sammenligning på null og 0 (object vs. integer)

if(cmd.ExecuteScalar() == null)
{
    Response.Write("nej");
} else {
    Response.Write("ja");
}

P.S. brug for guds parameters til at indsætte brugernavn og kodeord i din sql sætning, den metode du har brugt åbner din side for et sql injection attack
http://en.wikipedia.org/wiki/SQL_injection
Avatar billede jkampmann Nybegynder
15. januar 2008 - 18:17 #6
Hvilke paramenter??
Avatar billede mikalj Nybegynder
15. januar 2008 - 18:44 #7
Det er en struktur som lader dig skrive variabel navne i en sql forespørgsel istedet for de faktiske værdier, og som sørger for der ikke blive indsat noget skadeligt.

med mysql ville de se nogenlunde ud som følgende

cmd.CommandText = "SELECT id FROM brugere WHERE brugernavn = ?brugernavn AND kodeord = ?kodeord";
cmd.Parameters.AddWithValue("?brugernavn", Brugernavn.Text);
cmd.Parameters.AddWithValue("?kodeord", Kodeord.Text);

if(cmd.ExecuteScalar())
....


nu bruger jeg selv mest MSsql, så kan være det overstående kode ikke er 100% rigtigt, men det skulle beskrive princippet godt nok.
Avatar billede jkampmann Nybegynder
15. januar 2008 - 20:45 #8
Okay, tusind tak. Tak for dit tip. Du burde få en del af kagen. Smid svar begge 2 :)
Avatar billede mikalj Nybegynder
15. januar 2008 - 21:32 #9
svar
Avatar billede arne_v Ekspert
15. januar 2008 - 21:50 #10
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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