作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我在我的网站上创建了一个表单,它有一个输入,当用户填写它时,它会将其存储在数据库表中,它存储用户编写的内容。
现在,每当我再次输入某些内容时,它只会向该列添加一个值,而我想替换已添加的值。所以我想要的是,当我键入“Datebase”时,它将存储在 MySQL 表中,但是当我在同一输入中键入“Database 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>
最佳答案
INSERT
将新行添加到表中。 UPDATE
更新现有行。所以你可能会这样做:
UPDATE content SET heading = ?
(注意:我在这里使用参数占位符。虽然按照当前的方式转义输入是一个好主意,但这不是正确的方法。一般来说,查询参数仍然更安全、更稳定。This is a good place to start for that. )
但请注意,如果没有 WHERE
子句,这将替换表中的每条记录。虽然听起来您只希望表中只有一条记录,所以这是您实际期望的行为,这是正确的吗?如果是这样,那么我认为逻辑步骤方面的简单方法可能是:
但这最终会查询数据库两次,而使用正确的数据模型时,您只需要执行一次。如果您的表有一个简单的 int
主键,不自动递增,那么您可以执行以下操作:
INSERT INTO content (id, heading) VALUES(1, ?) ON DUPLICATE KEY UPDATE heading = ?
这会显式插入一个硬编码的主键1
。或者,如果该键已存在于表中(意味着您已经插入了一条预期记录),那么它会更新该记录。
关于php - 如何更新该列而不是向其中添加另一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58041572/
我是一名优秀的程序员,十分优秀!