gpt4 book ai didi

php - 如何更新该列而不是向其中添加另一个值?

转载 作者:行者123 更新时间:2023-11-29 06:28:33 24 4
gpt4 key购买 nike

所以我在我的网站上创建了一个表单,它有一个输入,当用户填写它时,它会将其存储在数据库表中,它存储用户编写的内容。

现在,每当我再次输入某些内容时,它只会向该列添加一个值,而我想替换已添加的值。所以我想要的是,当我键入“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com