我有一个函数,它接受一个数组并根据它们的数组的键/值对创建一个SQL语句。例如:
name=>SomeKittens
它变成了
(`name`) VALUES ('SomeKittens')
唯一的问题是我使用MySQL字符串函数,例如NOW()
。
creation_date=>NOW()
变成
(`creation_date`) VALUES ('NOW()')
请注意NOW()
已转义。有没有办法检测该值是否为MySQL字符串函数? (当然除了$value === "NOW()"
)
我正在使用Joomla DBO,但我也对PDO / MySQLi解决方案持开放态度。
答案 0 :(得分:4)
如果您允许带参数的函数,我认为您不能保护您的数据库免受SQL注入 如果你只允许没有参数的函数(比如NOW()),你也可以对列表进行硬编码。
答案 1 :(得分:1)
您可能只想定义一个像MYSQL_NOW这样的常量,在创建查询时,您知道要转换为NOW()函数调用而不是'NOW()'字符串。