我正在构建一个系统,您可以在其中为您的网站创建博客文章。 在那里我有一个 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,我还没有使用过。
希望有人能帮我解决这个问题:)
最佳答案
创建新行时,将 ID 放入隐藏字段中。那么处理输入的代码可以这样做:
if ($_POST['id']) {
// update existing row
} else {
// insert new row and put ID into hidden field
}
无需使用ON DUPLICATE KEY
,因为您可以从输入数据中知道它是作为新条目还是更新。
关于php - 更新帖子/行,而不是创建新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21699895/