2013-04-17 17 views
19

1つのテーブルのすべての行で1つの同じ列を更新したいと思います。すべての行の値を更新する入力フィールドが1つだけあります。このコードは動作していません、私はインデックスと配列に何か問題があることを知っています。テーブルのすべての行の1つの列を更新する

<?php 
    <form method="post" dir="rtl" name="maxcharfield" >      
     <textarea onKeyDown="textCounter(this,'progressbar1',300)" 
      onKeyUp="textCounter(this,'progressbar1',300)" 
      onFocus="textCounter(this,'progressbar1',300)" 
      style="font-family:'B_yekan';" id="text" name="text" rows="0" cols="0" class="required"></textarea> 
     <div class="cleaner h10"></div> 

     <div style="font-family:'B_yekan';" dir="rtl" id="progressbar1" class="progress" ></div> 
     <script>textCounter(document.getElementById("maxcharfield"),"progressbar1",100)</script>  

     <input class="styled-button-8" style="margin-top:10px; float:right; margin-right:50px; font-size: 14px; padding: 5px 14px;" type="submit" value="save" name="Submit" /> 
     <input style="font-family:'B_yekan';" type="reset" value="reset" id="reset" name="reset" class="submit_btn float_l" /> 

    </form> 

<?php 
// for updating Check if button name "Submit" is active, do this 
if(isset($_POST['Submit']) && $_POST['Submit'] == 'save') 
    { 
     $sql1="UPDATE `".$tbl_name."` SET `board`='".$_REQUEST['text']."' "; 
          $result1=mysql_query($sql1); 
    } 

    } 
?> 

答えて

43

あなたは解決策を複雑にしています。すべてのレコードを更新するには、あなたが取ろうとしているアプローチは次のとおりです。

  1. すべてのレコードを選択してください。
  2. 各レコードのIDを取得します。
  3. IDをループします。
  4. 各レコードをそのIDで更新します。

UPDATE構文では、これを行う方法がはるかに簡単です。 UPDATEステートメントにWHERE句を指定する必要はありません。その句がなければ、デフォルトでは、テーブル内のすべてのレコードを更新します。

UPDATE TableName SET `board`='value' 

はまた、あなたのコード内 SQL injection脆弱性を持っていることに注意してください。 $_REQUEST['text']をSQLクエリに直接使用することで、任意のユーザーがSQLコードをクエリに送信できるようになります。あなたのコードは、あなたが送信したものを実行します。これにより、ユーザーがデータを破損または削除したり、サーバーへの管理アクセス権を取得したりする可能性があります。

まずはmysql_*の機能を停止してください。 PHPはそれらを推奨していませんし、もはや使用されるべきではありません。それらにはa mysqli_ replacementがあります。それに加えて、the mysqli_real_escape_string() functionを使用して、入力をSQL照会で使用する前にサニタイズしてください。最後に、SQL文字列に直接値を連結するのではなく、prepared statementsを使用します。

+0

感謝しましたが、私はまだ更新できません –

+0

@モハマド:元の質問を新しいコードで更新できますか?潜在的に間違っていることがあります。 – David

+0

上記のコードを –

関連する問題