我正在创建一个类来轻松管理SQL命令。我创建了所有CRUD,现在我正在尝试创建一个名为save($ data,$ table)的新方法。 “save”必须识别INSERT或UPDATE是否为句子。
我在这一步中完全迷失了,我的大脑并没有感觉到一种安全有效的方法来识别这两个句子中的哪一个。
我的第一个想法是使用主键进行比较...
值存在:更新
值不存在或为空:插入
但是,这是一个弱解决方案。例如,如果恶意用户在表单中发送ID = 5,则会自动覆盖id为5的用户。
我接受建议和解决方案,谢谢!
答案 0 :(得分:3)
答案的两个部分:
您想要的SQL是
INSERT(fields)VALUES()在DUPLICATE KEY UPDATE ...
要控制的方法是发送一些其他唯一标识符,而不是ID。在您的表中,将主键(自动增量)和“unique_id”随机字符串md5()'设置为表中的唯一键。发送随机字符串作为标识符。然后根据该随机字符串进行更新。如果它不存在,它将创建一个新记录并自动增加一个主键。
我会更深入地验证您是否期望“新”或“更新”,但这种方法似乎符合您的要求。