0

我正在尝试将表单中的信息添加到数据库中与登录用户相对应的行中:

更新:这是工作代码

@{
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");
}
}

我如何更改它,而不是用户 userId='8',我实际上使用登录用户的用户 ID?我通常会使用@0 来执行此操作。但这已经被用来从表单中请求数据?

4

2 回答 2

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 等等。它们仅针对那一行存在,因此您可以一遍又一遍地使用该概念。

于 2013-04-09T17:17:02.670 回答
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

于 2013-05-26T12:59:02.790 回答