我有一个函数,它接受一个数组,并根据数组的键/值对创建SQL语句。例如:
name=>SomeKittens
它会变成
(`name`) VALUES ('SomeKittens')
唯一的问题是当我使用MySQL字符串函数(如NOW()
)时。
creation_date=>NOW()
变成
(`creation_date`) VALUES ('NOW()')
请注意,NOW()
是转义的。是否有任何方法可以检测该值是否为MySQL字符串函数?(当然除了$value === "NOW()"
)
我使用Joomla DBO,但对PDO/MySQLi解决方案也持开放态度。
(相关聊天讨论)
如果允许带有参数的函数,我认为您将无法保护数据库免受SQL注入的影响
如果只允许不带参数的函数(如NOW()),那么不妨硬编码一个列表。
您可能只想定义一个常量,如MYSQL_NOW,在创建查询时,您知道该常量将转换为NOW()函数调用,而不是'NOW(()'字符串。