On Duplicate Key Update正在创建一个新行而不是更新

时间:2017-11-14 18:55:25

标签: php mysql sql

我有一个名为buildTracker的数据表。 php表单发布要提交的数据以创建新的ID /行。这很有用。第二种形式提取现有行进行编辑 -

但是,它不是更新现有行,而是创建新行和新密钥(ID)

如何在不创建新行的情况下获取更新密钥?

$enteredBy    = $conn->real_escape_string($_POST['enteredBy']);
   $query   = "INSERT into buildtracker (EnteredBy)
    VALUES('" . $enteredBy . "')
    ON DUPLICATE KEY UPDATE EnteredBy='" . $enteredBy . "'";

$success = $conn->query($query);

我在哪里更新了错误?

数据表行包括ID(键)和EnteredBy(文本)

2 个答案:

答案 0 :(得分:2)

从它的外观来看,你的表buildTracker上有一个自动递增的键字段。如果你在桌子上做一个描述,我的猜测就是它会显示的内容。您插入日期的事实意味着自动增量将触发,您永远不会创建重复。如果你有EnteredBy作为主键,它应该总是更新$ enteredBy存在的位置。

答案 1 :(得分:1)

我猜你正在寻找update。更新如下:

UPDATE buildtracker 
    SET EnteredBy = ?
    WHERE <some column> = ?;

<some column> = ?会识别要更新的行。你没有这个的唯一原因是表只包含一行。

使用?表示您应该使用参数。您不应该使用输入值来设置查询字符串;您应该使用参数来避免意外的语法错误和SQL注入漏洞。