我正在尝试将表单中的信息添加到与登录用户对应的数据库中的行中:
更新:这是工作代码
@{
Layout = "~/_template1.cshtml";
var db = Database.Open("stayinflorida");
var CurrentUser = WebSecurity.CurrentUserId;
var userdetails = ("SELECT * from UserProfile WHERE UserId=@0");
var quserdetails = db.QuerySingle(userdetails, CurrentUser);
if (IsPost){
var updateuserdetails = "UPDATE UserProfile SET FirstName = @0, LastName = @1 WHERE UserID=@2";
db.Execute(updateuserdetails, Request["FirstName"], Request["LastName"]);
Response.Redirect("~/Account/MyDetails1.cshtml");
}
}
如何更改它,以便用户ID ='8'而不是用户,我实际上使用登录用户的用户ID?我通常会使用@ 0来做这件事。但是这已经被用来从表单中请求数据了吗?
答案 0 :(得分:1)
这个怎么样:
var db = Database.Open("stayinflorida");
var TheUser = WebSecurity.CurrentUserId;
var userdetails = ("SELECT * from UserProfile WHERE UserId=@0");
var data = db.Query(sqlQ, TheUser);
编辑:
每个SQL语句都有自己的一组'变量,称为@ 0,@ 1,@ 2等等。它们仅存在于那一行,因此您可以反复使用该概念。
答案 1 :(得分:1)
您的代码看起来不错,但您错过了一个条目userid = @ 2
var updateuserdetails = "UPDATE UserProfile SET FirstName = @0, LastName = @1 WHERE UserID=@2";
db.Execute(updateuserdetails, Request["FirstName"], Request["LastName"], WebSecurity.CurrentUserId);
或
var updateuserdetails = "UPDATE UserProfile SET FirstName = @0, LastName = @1 WHERE UserID=@2";
db.Execute(updateuserdetails, Request["FirstName"], Request["LastName"], CurrentUser );
必须输入每个参数。 @ 0,@ 1,@ 2代表Request [“FirstName”],Request [“LastName”],CurrentUser