-1

我目前正在编写一个应用程序,其中有一个名为 devices.php 的页面,它查询 mysql 数据库中的所有记录并将它们显示在 html 表中。我在表格的每一行都有一个复选框,用户可以选中它,然后单击“编辑”或提交按钮来编辑该记录。单击提交按钮时,它会将您带到另一个页面 edit_device.php,然后您可以在其中编辑该设备.. i $_GET 单击的复选框的值,这是该记录的“主键”,我然后查询数据库以输入该查询的值作为另一个 html 表单的默认值。这里的目标是将该设备拉入一个表单,如果他们需要更改该记录的所有列值,他们可以,或者如果他们只需要编辑一列值,他们可以删除默认值,并输入新... ,然后从数据库中提取该记录并将它们输入到表单的字段中......我遇到的问题是,当您更改表单文本框/字段中的值之一时,它不会在数据库中更新。它仍然只是原始值。这是我的代码:它没有在数据库中更新。它仍然只是原始值。这是我的代码:它没有在数据库中更新。它仍然只是原始值。这是我的代码:

<!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_pdoorphp_mysqli代替。是的,请注意NullPointer说的。您的代码容易受到SQL Injection的影响。

于 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-23T03:14:21.650 回答
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 回答