Ich versuche eine SQL-Select-Anweisung zu verwenden, um aus einer Datenbank zu lesen, um ein Login-Formular zu validieren. Das Problem, das ich habe, ist, dass es mir einen ungültigen Spaltennamen sagt.Warum gibt diese SQL-Anweisung einen ungültigen Spaltennamenfehler?
SELECT * FROM users
WHERE [username] = @theusername
AND [password] = @thepassword
wo @theusername ein parameratized Wert von „Rymo_18“ ist, und das Kennwort ist, im Interesse der Argumentation, „password“.
Die Fehler, die ich bekommen sind:
Ungültiger Spaltenname 'Rymo_18'.
Ungültiger Spaltenname ‚Passwort‘
Sie wissen nicht, warum ich diese Fehler bin immer. Ich habe versucht, die Werte um das = Zeichen zu tauschen, habe versucht, Werte direkt zu verwenden (username = "Rymo_18") und alle anderen Angelegenheiten des Fiedelns, um es zu beheben, und ich hatte kein Glück. Es gibt keine anderen Tabellen, die in meiner Datenbank "Benutzer" genannt werden.
EDIT: Hier ist der Code, wie es in der C# erscheint Ich verwende:
string user = unametext.Text;
string pword = pwordtext.Text;
string connectionstring = WebConfigurationManager.ConnectionStrings["elmtreeconnect"].ConnectionString;
SqlConnection myconnection = new SqlConnection(connectionstring);
myconnection.Open();
string query = "SELECT * FROM users WHERE (username= @theusername OR email = @theusername) AND password = @thepassword";
SqlCommand attemptLogin = new SqlCommand(query, myconnection);
attemptLogin.Parameters.AddWithValue("@theusername", user);
attemptLogin.Parameters.AddWithValue("@thepassword", pword);
SqlDataReader rdr = attemptLogin.ExecuteReader();
if (rdr.HasRows)
{
Session["user"] = rdr["username"].ToString();
Session["id"] = rdr["id"].ToString();
Session["type"] = rdr["accountType"].ToString();
Response.Redirect("loginsuccess.aspx");
}
else
{
unametext.Text = "";
pwordtext.Text = "";
statusLabel.Text = "Login failed. Please try again, or contact [email protected] for assistance";
}
Danke für die Hilfe!
verwendet werden müssen, um die Parameter in nicht mit ihnen in der Frage, wie gezeigt werden verketten. Sie sind also anfällig für SQL-Injection. –
Ja. Vermeiden Sie die SQL-Injektion mithilfe vorbereiteter Anweisungen. –
Und welche Sprache benutzen Sie? –