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