更新帖子/行,而不是创建新的

时间:2014-02-11 10:56:58

标签: php mysql ajax

我正在构建一个系统,您可以在其中为您的网站创建博客文章。 在那里,我有一个ajax功能,每两分钟保存一次你的帖子。 通过这种方式,如果您的计算机或互联网崩溃,您就不会失去工作。

但是现在,它每次自动保存时都会保存一个新行。我怎么做,所以不是创建多行,而是更新行?

我已经尝试使用ON DUPLICATE KEY UPDATE,但这不起作用。我认为可能是因为它需要表单中的唯一字段。但我的数据库中唯一唯一的是帖子/行的实际ID。

这是我尝试过的代码:

INSERT INTO blog (title, text, date) 
VALUES ('$blog_title','$blog_text','".time()."')
ON DUPLICATE KEY UPDATE
title='$blog_title', text='$blog_text', modified_date='".time()."'

我有一个想法,在第一次自动保存帖子时获取帖子/行ID。在这里,我可以使用mysql_insert_id()。然后这个ID可以存储在一个隐藏的输入字段中,当它再次自动保存时,它会看到已经有一个带有该ID的帖子/行,然后它只会更新而不是创建一个新的。

这是一个好的和安全的解决方案,还是我应该做别的事?

我似乎找不到更好的。


我找到了一些其他类似的问题,但他们使用的是JSON,我还没有使用过。

希望有人可以帮助我:)

1 个答案:

答案 0 :(得分:1)

创建新行时,将ID放入隐藏字段。然后处理输入的代码可以执行:

if ($_POST['id']) {
    // update existing row
} else {
    // insert new row and put ID into hidden field
}

没有必要使用ON DUPLICATE KEY,因为您从输入数据中知道它是否被注释为新条目或更新。