【问题标题】:Update MYSQL Table if Name is Already In the DB如果名称已经在数据库中,则更新 MYSQL 表
【发布时间】:2018-05-03 00:47:37
【问题描述】:

我有一个存储用户详细信息的数据库,我希望用户能够在姓名匹配时更新他们的详细信息。

目前我像这样向数据库提交详细信息:

$sql="INSERT INTO gdpr_info (name, email, phone, comments, phoneout, emailout, postout, phonein, emailin, postin) VALUES ('".$yourName."','".$yourEmail."', '".$yourPhone."', '".$comments."','".$phoneout."','".$emailout."','".$postout."','".$phonein."','".$emailin."','".$postin."')";

仅当名称匹配时,我将如何更新用户行,例如,如果一个名为“Robbie Fowler”的用户想要更新他的电子邮件,他会转到表单,输入他的姓名以及他之后输入的任何其他内容更新他的行而不是创建新行。

我已经看到了重复键选项,但在表单上有复选框,所以我担心如果我使用该复选框,大多数表单将由于复选框而至少有一个重复键,它会更新错误行。

您能否具体说明必须复制哪一列才能更新行?

【问题讨论】:

  • SELECT/WHERE 子句
  • 您的所有列都在主键中?我会说那是你的问题。

标签: php mysql mysqli


【解决方案1】:

如果他是想要更新他的详细信息的用户,我猜你使用 mysql 更新查询来更新这将如何完成是 首先从 db 获取用户。用户可以是想要更新的登录用户 然后像这样更新电子邮件列 UPDATE table-name SET column ='.$_POST['newvalue'].' WHERE namecolumn ='.$loggedINuser.';

或者如果你想改变你在问题中所说的名称输入和新电子邮件,那么 UPDATE table-name SET column ='..$_POST['newvalue'].' WHERE namecolumn ='.$_POST['name'].';

而且我猜一个表中只能有一个主字段,所以只需寻找你可以有多个唯一列但一个主列(建议使用 id 列)

希望这会奏效

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 2021-02-16
    • 2014-05-18
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多