查找字符串是否为PHP中的MySQL函数


Find if string is MySQL function in PHP

我有一个函数,它接受一个数组,并根据数组的键/值对创建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(()'字符串。