0

良い一日。

このわずかなエラーにしばらく悩まされていましたが、何が問題なのかわかりません。id、last_name、first_name の 3 つの列があります。後者の 2 つの更新は正常に行われますが、id 列は元の値に戻り続けます。

わかりましたので、ここに私のコードのいくつかのスニペットがあります:

while($row = mysql_fetch_array($result))
{

    echo "<tr>";  
    echo "<td><input type='checkbox' name ='doc_list[]' value =". $row ."></input></td>
          <td><input type='text' maxlength='9' id='id' name ='id' value =". $row['id'] ."></input></td> 
          <td><input type='text' maxlength='32' id='last_name' name ='last_name' value =". $row['last_name'] ."></input></td>
          <td><input type='text' maxlength='32' id='first_name' name ='first_name' value =". $row['first_name'] ."></input></td>
          <td><input type='submit' value='Update'/></td>
          <td><div id='message'></div></td>";

}   

次に、フォームが送信されると:

//Extracts the information from the form
$id = clean($_POST['id']);
$first_name = clean($_POST['first_name']);
$last_name = clean($_POST['last_name']);

//Input validations
//include("../php/validate_insertion.php");


//Updates doctor info
$query1="UPDATE doctors 
     SET id= '$id', last_name='$last_name', first_name='$first_name'
     WHERE id='$id'";
$result = mysql_query($query1) or die(mysql_error());

エラーはどこにありますか?

4

2 に答える 2

2

ID を変更するロジックはよくわかりませんが、問題は元の ID を保持していないことです。whereたまたま新しい ID を持つレコードではなく、元のレコードを更新する条件でそれが必要です。

本当にこの方法を使用したい場合 (ID が重複していると問題が発生します...)、元の ID を非表示フィールドとして追加して、どのレコードを更新するかがわかるようにする必要があります。

于 2012-04-19T00:50:44.787 に答える
1

なぜ ID を変更するのかが私の最初の質問です。

いずれにせよ、本当に ID を変更する必要がある場合は、このフォームが生成された元の ID を取得する必要があります。これを行う 1 つの方法は、このフォームが生成されたデータベース行の元の ID を提供できる非表示の入力フィールドをフォームに配置することです。

PS: また、セキュリティの観点から、どの行を更新するかにもよりますが、ユーザー フォームから id を受け入れることはお勧めできません。誰かがその非表示フィールド ID を別のものに変更したらどうなるでしょうか。

于 2012-04-19T00:56:00.463 に答える