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

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


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


繁华开满天机
浏览 130回答 1
1回答

呼唤远方

INSERT向表中添加新行。&nbsp;UPDATE更新现有行。所以你可能会做这样的事情:UPDATE&nbsp;content&nbsp;SET&nbsp;heading&nbsp;=&nbsp;?(注意:我在这里使用参数占位符。虽然以您当前的方式转义输入是一个好主意,但这不是正确的方法。查询参数通常仍然更安全、更稳定。&nbsp;这是一个很好的起点那个。)但是请注意,如果没有WHERE子句,这将替换表中的每条记录。虽然听起来您只希望表中有一条记录,所以这是您实际想要的行为,对吗?如果是这样,那么我想就逻辑步骤而言,一种简单的方法可能是:从表中读取。如果存在一行,则更新。否则,插入。但这最终会查询数据库两次,而使用正确的数据模型您只需要执行一次。如果您的表有一个简单的int主键,而不是自动递增,那么您可以执行以下操作:INSERT&nbsp;INTO&nbsp;content&nbsp;(id,&nbsp;heading)&nbsp;VALUES(1,&nbsp;?)&nbsp;ON&nbsp;DUPLICATE&nbsp;KEY&nbsp;UPDATE&nbsp;heading&nbsp;=&nbsp;?这将做的是显式插入硬编码的主键1。或者,如果该键已经存在于表中(意味着您已经插入了一个预期的记录),那么它会更新该记录。
打开App,查看更多内容
随时随地看视频慕课网APP