-1

私は現在、mysql データベース内のすべてのレコードを照会し、それらを html テーブルに表示する devices.php というページがあるアプリケーションを作成しています。テーブルの各行にチェックボックスがあり、ユーザーがチェックしてから、「編集」または送信ボタンをクリックしてそのレコードを編集できます。送信ボタンをクリックすると、別のページ edit_device.php に移動し、そこでそのデバイスを編集できます.. i クリックされたチェックボックスの値を $_GET します。これは、そのレコードの「主キー」です。次に、データベースにクエリを実行して、そのクエリの値を別の HTML フォームのデフォルト値として入力します。ここでの目標は、そのデバイスをフォームに取り込むことです。そのレコードのすべての列の値を変更する必要がある場合は、または、列の値を 1 つだけ編集する必要がある場合は、デフォルト値を消去するだけで済みます。そして新しいものを入力してください...私はそのフォームの値を $_GET しようとしており、データベース内のそのレコードを更新しようとしています..今、devices.phpで編集をクリックすると、edit_devices.phpに移動します、そしてそのレコードをデータベースから引き出してフォームのフィールドに入力します...私が抱えている問題は、フォームのテキストボックス/フィールドの値の1つを変更すると、データベースで更新されないことです。まだ元の値です。ここに私のコードがあります: データベースでは更新されません。まだ元の値です。ここに私のコードがあります: データベースでは更新されません。まだ元の値です。ここに私のコードがあります:

<!doctype html>
 <html>

    <?php
      include 'dbcon.config';

      $id=$GET_['check_box'];
      $result=mysql_query("SELECT * FROM device_entries WHERE Id=$id");
      $record=mysql_fetch_row($result);

      $ident    = $record[0];
      $suspend  = $record[1];
      $device   = $record[2];
      $ipadd    = $record[3];
      $dep      = $record[4];
      $emailadd= $record[5];
   ?>

    <body>
      <form method="get">
            ID:         <input type="text" value="<?php echo $ident; ?>" name="id">
            Suspended:  <input type="text" value="<?php echo $suspend; ?>" name="sus">
            Device :    <input type="text value="<?php echo $device; ?>" name="device">
            IP :        <input type="text" value="<?php echo $ipadd; ?>" name="ip">
            Dependency: <input type="text" value="<?php echo $dep; ?>" name="depend">
            Email:      <input type="text" value="<?php echo $emailadd; ?>" name="email">

            <input type="submit" value="update" name="submit1">
      </form> 
   </body>
 </html>

<?php
   if(isset($_GET['submit1'])) {
      $id=$_GET['id'];
      $sus=$_GET['sus'];
      $dev=$_GET['device'];
      $ip=$_GET['ip'];
      $depend=$_GET['depend'];
      $email=$_GET['email'];

      $update=mysql_query("UPDATE device_entries SET Suspended=$sus, Device=$dev, IP=$ip, Depend=$depend, Email=$email WHERE Id=$id")
   }
   mysql_close($con);
?>

上部は私がやりたいことをやっているようです...それは $update クエリで何かのようです。

4

4 に答える 4

2

クエリを次のように変更してみてください。

"UPDATE `device_entries` SET `Suspended`='$sus', `Device`='$dev', `IP`='$ip', `Depend`='$depend', `Email`='$email' WHERE Id=$id"
  1. ;の,前にコンマがありました。WHERE
  2. バッククォート/バックティックを使用して列名をエスケープする必要がある場合があります。
  3. 文字列値は一重引用符で囲む必要があります'

更新:

1 > 変数を確認することをお勧めします:

var_dump($id, $sus, $dev, $ip, $depend, $email);

クエリ実行前。

2 > 場所:

if(mysql_errno())exit(mysql_error());

クエリ実行後、問題を自分で判断します。これは、役立つはずのデバッグ手段です。プロダクション/デロイメント バージョンではそれらを削除する可能性があります。

PS: php_mysql非推奨です。php_pdoまたはphp_mysqli代わりに使用することをお勧めしますはい、 NullPointerが言ったことに注意してください。あなたのコードはSQL インジェクションに対して脆弱です。

于 2013-04-23T03:12:09.647 に答える
1

あなたのクエリは間違っています。無効な where 句の前にコンマを配置しています。これに変更

"UPDATE device_entries SET Suspended=$sus, Device=$dev, IP=$ip, Depend=$depend, Email=$email  WHERE Id='".$id."'";

第二に、「sus」と呼ばれる HTML 以外の既存のフィールドを変数に割り当てようとしているために実行されていないため$suspend、更新クエリが失敗します。

于 2013-04-23T03:10:08.743 に答える
0

$update=mysql_query("UPDATE device_entries SET Suspended='$sus', Device='$dev', IP='$ip', Depend='$depend', Email='$email' WHERE Id=$id");

--列名の前に目盛りを追加するだけで解決しました..そして、私が自分で試した一重引用符は運がありませんでした

于 2013-04-23T17:12:40.013 に答える
0

次のように変更

$update=mysql_query("UPDATE device_entries SET Suspended='$sus', Device='$dev', IP='$ip', Depend='$depend', Email='$email' WHERE Id=$id");
于 2013-04-23T03:14:21.650 に答える