我正在构建一个系统,您可以在其中为您的网站创建博客文章。 在那里,我有一个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,我还没有使用过。
希望有人可以帮助我:)
答案 0 :(得分:1)
创建新行时,将ID放入隐藏字段。然后处理输入的代码可以执行:
if ($_POST['id']) {
// update existing row
} else {
// insert new row and put ID into hidden field
}
没有必要使用ON DUPLICATE KEY
,因为您从输入数据中知道它是否被注释为新条目或更新。