4

我有一个函数,它接受一个数组并根据数组的键/值对创建一个 SQL 语句。例如:

 name=>SomeKittens

它会变成

(`name`) VALUES ('SomeKittens')

唯一的问题是当我使用 MySQL 字符串函数时,例如NOW().

creation_date=>NOW()

变成

(`creation_date`) VALUES ('NOW()')

请注意,NOW()已转义。有什么方法可以检测该值是否是 MySQL 字符串函数?(当然除了$value === "NOW()"

我正在使用 Joomla DBO,但也对 PDO/MySQLi 解决方案持开放态度。

相关聊天讨论

4

2 回答 2

4

如果您允许带有参数的函数,我认为您将无法保护您的数据库免受 SQL 注入。
如果您只允许不带参数的函数(例如 NOW()),您不妨硬编码一个列表。

于 2012-07-24T19:00:17.950 回答
1

您可能只想定义一个像 MYSQL_NOW 这样的常量,在创建查询时您知道要转换为 NOW() 函数调用而不是 'NOW()' 字符串。

于 2012-07-24T18:57:51.527 回答