【发布时间】:2012-08-28 03:40:51
【问题描述】:
我正在创建一个类来轻松管理 SQL 命令。我创建了所有 CRUD,现在我正在尝试创建一个名为 save ($ data, $ table) 的新方法。 "save" 必须识别 INSERT 或 UPDATE 是一个句子。
我完全迷失在这一步,我的大脑没有感觉到一种安全有效的方法来识别两个句子中的哪一个。
我的第一个想法是使用主键进行比较...
值存在:更新
值不存在或为空:插入
但是,这是一个弱解决方案。例如,如果恶意用户在表单中发送 ID=5,则自动覆盖 id 为 5 的用户。
我接受建议和解决方案,谢谢!
【问题讨论】:
-
if a malicious user sends ID=5 in form, automatically overwrite the user with id 5清理表单数据。 -
或者,你知道,只是准备你的陈述。人们可能会注意到 PDO 恰好以参数化查询而闻名。
-
什么类型的SQL?微软SQL? MYSQL? POSTGRESQL?
-
@FrankieTheKneeMan 背后的想法不就是使用 PDO 来抽象出数据库的细节吗?
-
@arxanas 连接,是的,但不是您使用的 SQL。语言之间可能存在中断查询的语法差异。