0

バグ追跡ツールを構築しています。

プロジェクトにバグを追加できます。これらのバグにはステータス (未解決または解決済み) があります。

この選択フォームを使用すると、プロジェクト ページのステータスを変更できます。すべてのバグが表に表示されます。

                <form action="classes/bugStatus.class.php" method="post">
                  <select name="status" id="status" onchange='this.form.submit()'>
                       <option>-Select-</option>
                       <option value="Solved">Solved</option>
                       <option value="Unsolved">Unsolved</option>
                   </select>
                <input type='hidden' name='ID' value="<?php echo $id;?>"> 
                <noscript><input type="submit" value="Submit"></noscript> 
                </form>

このクラスでは、ステータスが変更されます。

 $status = $_POST['status'];
 $id     = $_POST['ID'];

$sql="UPDATE bugs SET status = '$status'";  

 $result = mysql_query($sql); 
 $result = mysql_real_escape_string($sql); 

 if($result){
      header('Location: ../projectpage.php?id='.$id); 
      } else { 
      echo "There is something wrong. Try again later."; } 
      mysql_close();

問題は、何かを選択すると、そのプロジェクトのすべてのバグのすべてのステータスが変更されることです。それは望ましくありません。選択したバグのステータスのみを変更したい。MySQL db では、バグごとに一意の ID が割り当てられているため、そのバグ ID も選択する必要があると思います。データベースからそのバグ ID を取得する方法がわかりません。

フォームはSQLインジェクションプルーフではなく、mysqliでもありません。これは後で変更します。

誰でも私を助けることができますか?

4

1 に答える 1

1
$sql="UPDATE bugs SET status = '$status'"; 

この行を更新する必要がありますWHERE id = $id

現在、更新するバグを指定していないため、すべてを更新します。

追記として、コミュニティ全体が古い mysql 拡張機能を使用しているあなたを追いかけます。mysqliまたはを見てPDOください。長い目で見れば、あなたの価値があると約束します。

おっと、あなたはすでにそれについて言及しましたが、気にしないでください。

于 2013-08-09T18:21:01.717 に答える