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

标签 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,我还没有使用过。

希望有人能帮我解决这个问题:)

最佳答案

创建新行时,将 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/

相关文章:

jquery - 如何解析这个 XML ajax 响应?

ajax - jQuery Ajax - 向 DOM 添加新元素

jquery ajax调用返回JSON解析错误

javascript - 多次提交表单

php - 我如何使用 Phpmailer 附加图像?

mysql - mysql(mariadb)启动失败

mysql - count(*) 在 MyISAM 表中太慢了

php - 如何在相关 ORM Laravel 的 json 对象中选择数据写入位置

php - 获取数组 php bigtee

PHP PDO SQLSTATE[HY000] [2002] 连接被拒绝