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

时间:2012-07-24 18:53:31

标签: php mysql joomla joomla-dbo

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

 name=>SomeKittens

它变成了

(`name`) VALUES ('SomeKittens')

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

creation_date=>NOW()

变成

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

请注意NOW()已转义。有没有办法检测该值是否为MySQL字符串函数? (当然除了$value === "NOW()"

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

relevant chat discussion

2 个答案:

答案 0 :(得分:4)

如果您允许带参数的函数,我认为您不能保护您的数据库免受SQL注入 如果你只允许没有参数的函数(比如NOW()),你也可以对列表进行硬编码。

答案 1 :(得分:1)

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