2

我正在制作一个类来轻松管理 SQL 命令。我创建了所有 CRUD,现在我正在尝试创建一个名为 save ($ data, $ table) 的新方法。"save" 必须识别 INSERT 或 UPDATE 是否是一个句子。

我完全迷失在这一步,我的大脑没有感觉到一种安全有效的方法来识别两个句子中的哪一个。

我的第一个想法是使用主键进行比较...

值存在:更新

值不存在或为空:插入

但是,这是一个弱解决方案。例如,如果恶意用户在表单中发送 ID=5,则自动覆盖 id 为 5 的用户。

我接受建议和解决方案,谢谢!

4

1 回答 1

3

答案分两部分:

  1. 你想要的 SQL 是

    INSERT(fields) VALUES() ON DUPLICATE KEY UPDATE...

  2. 控制的方法是发送一些其他的唯一标识符,而不是 ID。在您的表中,将主键(自动增量)和“unique_id”随机字符串 md5() 设置为表中的唯一键。发送随机字符串作为标识符。然后根据该随机字符串进行更新。如果它不存在,它将创建一个新记录并自动增加一个主键。

我会比这更深入地验证您是否期待“新”或“更新”,但这种方法似乎符合您的要求。

于 2012-08-28T04:21:10.847 回答