Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $POST值不更新数据库?错误的MySQL查询?_Php_Html_Mysql - Fatal编程技术网

Php $POST值不更新数据库?错误的MySQL查询?

Php $POST值不更新数据库?错误的MySQL查询?,php,html,mysql,Php,Html,Mysql,我目前正在编写一个应用程序,其中有一个名为devices.php的页面,用于查询mysql数据库中的所有记录,并将它们显示在html表中。我在表格的每一行都有一个复选框,用户可以选中该复选框,然后单击“编辑”或“提交”按钮编辑该记录。单击submit按钮时,它会将您带到另一个页面,edit_device.php,然后您可以在那里编辑该设备。。i$\u获取单击的复选框的值,这是该记录的“主键”,然后我查询数据库以输入该查询的值作为另一个html表单的默认值。。这里的目标是将该设备拉入一个表单,如果

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

<!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);
?>


ID:您的查询i错误,您在where子句之前放置的逗号无效。换成这个

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

其次,它没有执行,因为您正试图将一个名为“sus”的非html现有字段分配给变量
$suspend
,这会导致更新查询失败尝试将查询更改为:

"UPDATE `device_entries` SET `Suspended`='$sus', `Device`='$dev', `IP`='$ip', `Depend`='$depend', `Email`='$email' WHERE Id=$id"
  • 之前有一个逗号
    ,其中
    
    
  • 可能需要使用backqoutes/backticks转义列名
  • 字符串值应使用单引号
  • UPD:

    1>我建议您使用以下方法检查变量:

    在查询执行之前

    2>地点:

    在查询执行之后,您可以自己确定问题。这是一个调试措施,应该会有所帮助。您可以在生产/deloyment版本中删除它们

    p.S.:
    php\u mysql
    已被弃用。我建议您使用
    php_pdo
    php_mysqli
    。是的,请注意,NullPointer说。您的代码可以更改为

    $update=mysql_query("UPDATE device_entries SET Suspended='$sus', Device='$dev', IP='$ip', Depend='$depend', Email='$email' WHERE Id=$id");
    
    $update=mysql_查询(“更新设备”项集
    Suspended
    ='$sus',
    device
    ='$dev',
    IP
    ='$IP',
    Depend
    ='$Depend',
    Email
    ='$Email'其中Id=$Id”)


    --只需在列名解决问题之前添加勾号。。我自己试过的单引号,运气不好

    对不起,在真正的代码中没有,我在这里输入时不小心把它放在了那里,然后你能编辑你的问题吗。这看起来像是一个明显的语法错误。我甚至尝试将这些变量连接到查询中,但仍然没有成功。我发现还有一个问题,您得到了$suspend=$\u GET['sus']html中的sus字段在哪里?@nacy为什么不检查其他字段是否也设置了。。。。而且你的代码容易受到sql注入的攻击,你需要逃避所有的请求..我已经试过了$update=mysql\u查询(“更新设备\u项集挂起=””。$sus。“”,设备=”。$dev。",等等……这不会产生同样的结果吗?@nacy,会的。还有一件事。我原本拥有数据库方面的所有mysqli,但运营副总裁告诉我不要使用它。idk,关于他们做事的方式。我只是一个实习生,一个新手,不完全了解一切。如果他/她告诉我,不要相信
    VP
    您需要使用
    mysql
    而不是
    mysqli
    。他/她已被弃用)))如果您向其他用户寻址,请不要进行粗体测试。。因为用户不会收到通知。。谢谢你得到的是什么n
    还是死亡(mysql\u error())
    ?欢迎使用堆栈溢出。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果你选择PDO,好的,孩子,看这个。。。您的代码广泛/完全开放用于sql注入这是什么?即使它只是内部代码(这不是使用不推荐使用的危险代码的借口)-您确实应该对传入的数据进行一些基本的验证和验证。例如,如果您需要一个整数ID,那么至少使用验证它。
    if(mysql_errno())exit(mysql_error());
    
    $update=mysql_query("UPDATE device_entries SET Suspended='$sus', Device='$dev', IP='$ip', Depend='$depend', Email='$email' WHERE Id=$id");