テーブルを更新しようとしています。ユーザーが数量を入力できるTextBoxが1つしかないページがありますが、それは更新されません。エラーや何もありません。そして、ちょうど列に「1」があり、次に「6」と言うように更新した後、テーブルに戻ってその特定の行が「0」になったとしましょう。理解できません。更新するだけで動作しません
URLのクエリ文字列部分を見ると、私はフォームにufingを投稿する値に関係なく、常に0がクエリ文字列であると言います。
var UpdateQuantityQuery = "";
if(Request.Form["IsBoxed"].AsBool() == true)
{
UpdateQuantityQuery = "UPDATE Cart SET Boxes = '" + Request.Form["quantity"].AsInt() + "' WHERE PartNumber = '" + Request.Form["PartNumber"] + "' AND IsBoxed = 'True' AND OrderId = '" + Session["OSFOID"] + "'";
database.Execute(UpdateQuantityQuery);
// Redirect back to their SHopping Cart now.
Response.Redirect("~/Account/Cart.cshtml");
}
else
{
UpdateQuantityQuery = "UPDATE Cart SET Units = '" + Request.Form["quantity"].AsInt() + "' WHERE PartNumber = '" + Request.Form["PartNumber"] + "' AND IsBoxed = 'False' AND OrderId = '" + Session["OSFOID"] + "'";
database.Execute(UpdateQuantityQuery);
// Redirect back to their SHopping Cart now.
Response.Redirect("~/Account/Cart.cshtml");
}
、フォームのコードは次のとおりです:ここで
は、私が持っているものだ
<form method="post" action="EditQuantity.cshtml?Update=OK&[email protected]["PartNumber"]&[email protected]["IsBoxed"]">
<fieldset>
<legend>Edit Quantity</legend>
<label for="quantity">
@Message
</label>
<input type="text" name="quantity" title="Edit Quantity" />
<input type="submit" value="Confirm" title="Confirm Change" />
</fieldset>
</form>
が、私はこれがcojombulateさせることができ、ここで何かを間違ってやっていますか?あなたは
if(Request.QueryString["IsBoxed"].AsBool() == true)
を形成していない使用する必要があります
正確に何がデータベースに送られているかを見るために 'UpdateQuantityQuery'も表示してください。 '.AsInt()'は何をしますか? –
あなたの質問に答えるのではなく、あなたのコードを見て、SQLインジェクション攻撃とそれを避ける方法を読んでみてください。クエリを書く方法は、SQLクエリでユーザー入力を使用しない方法の教科書の例です。 http://msdn.microsoft.com/en-us/library/ff648339.aspx – David
"PartNumber"というパラメータを持つフォームポストを ''; DROP TABLE CART'として送信したいのですが、あなたのコードはSQLインジェクションに対して非常に脆弱です。いくつかの緊急性のあるパラメータ化されたクエリを調べます。 – spender