2011-07-22 21 views
0

私はASP.NET Razorを使用しています。CSHTML - SQL QUERY .... WHERE NAME = @ NameOne

<form style="display:inline" name="formular1" method="post" action="default.cshtml"> 
          <select name="phone1" class="dropdown"> 
          @foreach(var row in db.Query("SELECT * FROM Handy")){ 
       <option value="@row.Handyname">@row.Handyname</option> 
      } 
             </select> 
     vs. 
          <select name="phone2" class="dropdown"> 
              @foreach(var row in db.Query("SELECT * FROM Handy")){ 
       <option value="@row.Handyname">@row.Handyname</option> 
      } 
             </select> 
     <input type="submit"/ value="Compare"> 
     </form> 
     @{ 
      var phoneOne = ""; 
      var phoneTwo = ""; 
        if(IsPost){ 

         // request input of the select forms 
         phoneOne = Request["phone1"]; 
         phoneTwo = Request["phone2"]; 
        } 
       }          
    </div> 

    <div class="content"> 
     <div class="start"> 
      <p><h2>@phoneOne</h2></p> 
      <ul> 
      @{ 
       if(IsPost){ 
        foreach(var row in db.Query("SELECT * FROM Handy WHERE [email protected]")){ 
       <li>processor: @row.Prozessor GHz</li> 
       <li>memory: @row.RAM MB Ram</li> 
       <li>weight: @row.Gewicht g</li> 
       <li>display: @row.Display ''</li> 
       <li>OS: @row.OS</li> 
      } 
       } 
      } 


      </ul> 
     </div> 

クエリでエラーが発生しました:WHERE Handyname = @ phoneOne ...すべて正常に動作します。私は間違って何をしていますか?

ありがとうございました!これにより

foreach(var row in db.Query("SELECT * FROM Handy WHERE [email protected]")) 

+0

エラーは何ですか? SQLエラー、またはRazor? – GalacticCowboy

答えて

1

非常にわからないが、私はあなたがこの交換する必要があると思う

foreach(var row in db.Query("SELECT * FROM Handy WHERE [email protected]@phoneOne")){ 
+1

あなたがそのルートを利用する場合、[SQLインジェクション攻撃](http://en.wikipedia.org/wiki/SQL_injection)を防ぐために非常に注意する必要があります。 –

1

としてはhereを説明し、次のようにしてみてくださいdb Razorのデータベースコンポーネントへの参照?その場合は、代わりに@ 0、@ 1、(インデックス)を使用します。

foreach(var row in db.Query("SELECT * FROM Handy WHERE [email protected]")) 

また、そのメソッドのパラメータコレクションで値を渡します。

0

です:

foreach(var row in db.Query("SELECT * FROM Handy WHERE Handyname= " + phoneOne))