2013-04-09 116 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