因此,我在网站上创建了一个表单,该表单有一个输入,当用户填写该表单时,会将其存储在datebase表中,并存储用户编写的内容。
现在,每当我再次键入内容时,它只会为该列增加一个值,而我想替换已添加的值。因此,我想要的是例如在键入“ Datebase”时将其存储在MySQL表中,但是再次在相同的输入中键入“ Datebase change”时,它将仅更新当前值,并且将其从“ Datebase”到“ 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>
答案 0 :(得分:2)
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
的硬编码主键。或者,如果该键已经存在于表中(意味着您已经插入了一个预期的记录),那么它将更新该记录。