2013-04-09 114 views
0

我试图从形式与登录用户对应一个数据库信息添加到行:变量和形式要求 - WebMatrix中

更新:这是工作的代码

@{ 
Layout = "~/_template1.cshtml"; 

var db = Database.Open("stayinflorida"); 
var CurrentUser = WebSecurity.CurrentUserId; 
var userdetails = ("SELECT * from UserProfile WHERE [email protected]"); 
var quserdetails = db.QuerySingle(userdetails, CurrentUser); 

if (IsPost){ 
var updateuserdetails = "UPDATE UserProfile SET FirstName = @0, LastName = @1 WHERE [email protected]"; 
db.Execute(updateuserdetails, Request["FirstName"], Request["LastName"]); 
Response.Redirect("~/Account/MyDetails1.cshtml"); 
} 
} 

我如何改变它,以便不是用户userId ='8',我实际上使用登录用户的用户ID?我通常会使用@ 0来做到这一点。但是这已经被用于从表单请求数据?

回答

1

你的代码看起来很好,但你错过了一个条目的userid = @ 2

var updateuserdetails = "UPDATE UserProfile SET FirstName = @0, LastName = @1 WHERE [email protected]"; 
db.Execute(updateuserdetails, Request["FirstName"], Request["LastName"], WebSecurity.CurrentUserId); 

var updateuserdetails = "UPDATE UserProfile SET FirstName = @0, LastName = @1 WHERE [email protected]"; 
db.Execute(updateuserdetails, Request["FirstName"], Request["LastName"], CurrentUser); 

每个参数都必须输入。 @ 0,@ 1,@ 2代表Request [“FirstName”],Request [“LastName”],CurrentUser

1

如何:

var db = Database.Open("stayinflorida"); 
var TheUser = WebSecurity.CurrentUserId; 
var userdetails = ("SELECT * from UserProfile WHERE [email protected]"); 
var data = db.Query(sqlQ, TheUser); 

编辑:

每个SQL语句获取自己的一组变量叫@ 0”,@ 1,@ 2等等。它们只存在于那一行,所以你可以一遍又一遍地使用这个概念。

+0

是的,但我已经在我的post语句中使用了@ 0。 – Gavin5511 2013-04-09 20:17:49

+1

每个SQL语句都有自己的一组'变量,称为@ 0,@ 1,@ 2等等。它们只存在于那一行,所以你可以一遍又一遍地使用这个概念。 – Knox 2013-04-10 12:06:54

+0

谢谢诺克斯。所以我想将代码更改为此... var updateuserdetails =“更新UserProfile SET FirstName = @ 0,LastName = @ 1 WHERE UserID = @ 2”;我将如何填充变量的用户ID? – Gavin5511 2013-04-10 12:58:14