我已经构建了一个自定义验证器,
我有一个像这样的SQL查询:
protected void custom_serverValidate(object sender, ServerValidateEventArgs e)
{
connect();
string strSQL = "select EmailAddress from Accounts_Users where EmailAddress=" + REmailTextBox.Text;
SqlCommand cmd = new SqlCommand(strSQL, objConnection);
if (e.Value.ToString() == cmd.ExecuteScalar().ToString())
{
e.IsValid = false;
}
else
e.IsValid = true;
disConnect();
}
当我在浏览器和电子邮件地址中执行我的代码并提交它时,我收到标题中提到的错误。如何解决?
答案 0 :(得分:2)
您的电子邮件地址周围缺少引号。但是 - 这是一个等待发生的SQL注入攻击。请切换到使用参数。
string strSQL = "select EmailAddress from Accounts_Users where EmailAddress = @EmailAddress"
...
cmd.Parameters.AddWithValue("@EmailAddress", REmailTextBox.Text);
答案 1 :(得分:1)
您忘记使用单引号。使用:
string commandText = "select EmailAddress from Accounts_Users where EmailAddress=@EmailAttress";
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.Parameters.Add("@EmailAddress", REmailTextBox.Text);