我正在编写一个应用程序,其中有一个名为devices.php的页面,它查询mysql数据库中的所有记录并将它们显示在html表中。我在表格的每一行都有一个复选框,供用户查看,然后点击"编辑"或提交按钮来编辑该记录。当单击提交按钮时,它会转到另一个页面edit_device.php,然后您可以在其中编辑该设备.. i $ _GET单击复选框的值,这是"主键"然后我查询数据库以输入该查询的值作为另一个html表单的默认值。这里的目标是将该设备拉入表单,如果他们需要更改所有列值那条记录,他们可以,或者如果他们只需要编辑一个列值,他们就可以删除默认值,然后输入新的...我正在尝试$ _GET该表单的值,并更新该记录在数据库中..现在,当我点击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);
?>
最重要的部分似乎正在做我想要的......似乎它是$ update查询的东西。
答案 0 :(得分:2)
尝试更改查询:
"UPDATE `device_entries` SET `Suspended`='$sus', `Device`='$dev', `IP`='$ip', `Depend`='$depend', `Email`='$email' WHERE Id=$id"
,
之前有一个逗号WHERE
; '
。的 UPD:强> 的
1&gt;我建议您使用以下方法检查变量:
var_dump($id, $sus, $dev, $ip, $depend, $email);
在查询执行之前。
2&gt;位:
if(mysql_errno())exit(mysql_error());
查询执行后自行确定问题。这是一个 调试措施 应该有所帮助。您可以在生产/部署版本中删除它们。
P.S。: php_mysql
已弃用。我建议您改用php_pdo
或php_mysqli
。是的,请注意 NullPointer 说。您的代码难以理解SQL Injection.
答案 1 :(得分:1)
您的查询我错了,您在无效的where子句之前放置逗号。将其更改为此
"UPDATE device_entries SET Suspended=$sus, Device=$dev, IP=$ip, Depend=$depend, Email=$email WHERE Id='".$id."'";
其次它没有执行,因为你试图将一个名为'sus'的非html现有字段分配给变量$suspend
,导致更新查询失败
答案 2 :(得分:0)
更改为
$update=mysql_query("UPDATE device_entries SET Suspended='$sus', Device='$dev', IP='$ip', Depend='$depend', Email='$email' WHERE Id=$id");
答案 3 :(得分:0)
$ update = mysql_query(“UPDATE device_entries SET Suspended
='$ sus',Device
='$ dev',IP
='$ ip',Depend
='$ depend',Email
='$ email'WHERE Id = $ id“);
- 只需在列名称解决之前添加刻度线..以及单引号,我自己尝试过,没有运气