所以我在我的网站上创建了一个表单,它有一个输入,当用户填写它时,它将它存储在数据库表中,它存储用户写的内容。现在,每当我再次输入内容时,它只会向列添加一个值,我想替换已经添加的值。所以我想要的是,当我输入例如“Datebase”时,它将存储在 MySQL 表中,但是当我再次在同一输入中输入“Datebase change”时,它只会更新当前值,它将从“数据库”到“数据库更改”。所以我不想添加更多的值,我只需要这个输入,它会改变每次提交时列上的内容。我的代码:<?php $title = 'Admin Panel - Edit';include '../config.php';$heading = mysqli_real_escape_string($link, $_REQUEST['heading']);// Attempt insert query execution$sql = "INSERT INTO content (heading) VALUES ('$heading')";if(mysqli_query($link, $sql)){ echo "Records inserted successfully.";} else{ echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);}?><form action="edit.php"> <input type="text" name="heading" id="heading" /> <input type="submit" value="Submit" name="submit" /></form>
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
INSERT
向表中添加新行。 UPDATE
更新现有行。所以你可能会做这样的事情:
UPDATE content SET heading = ?
(注意:我在这里使用参数占位符。虽然以您当前的方式转义输入是一个好主意,但这不是正确的方法。查询参数通常仍然更安全、更稳定。 这是一个很好的起点那个。)
但是请注意,如果没有WHERE
子句,这将替换表中的每条记录。虽然听起来您只希望表中有一条记录,所以这是您实际想要的行为,对吗?如果是这样,那么我想就逻辑步骤而言,一种简单的方法可能是:
从表中读取。
如果存在一行,则更新。
否则,插入。
但这最终会查询数据库两次,而使用正确的数据模型您只需要执行一次。如果您的表有一个简单的int
主键,而不是自动递增,那么您可以执行以下操作:
INSERT INTO content (id, heading) VALUES(1, ?) ON DUPLICATE KEY UPDATE heading = ?
这将做的是显式插入硬编码的主键1
。或者,如果该键已经存在于表中(意味着您已经插入了一个预期的记录),那么它会更新该记录。
- 1 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消